Cristiano Ronaldo’s first game for Juventus in his native Portugal ended in 2-1 defeat as FC Porto out-played the Italians for much of Wednesday’s Champions League last-16, first leg tie.
Iranian striker Mehdi Taremi put the hosts ahead after just a minute at Estadio do Dragao following a Rodrigo Bentacur defending error.
And Mali striker Moussa Marega added a second straight right after the break.
But Federico Chiesa pulled a goal back with eight minutes to go to keep Juventus afloat with the second leg in Turin on March 9.
It was a lacklustre performance from the Italian giants, chasing their third Champions League title and first in 25 years.
Record Champions League goal scorer Ronaldo, 36, drew a blank against a side captained by his Portuguese international and former Real Madrid teammate Pepe, as the visitors struggled to recover from their early blunder.
Wojciech Szczesny had sent the ball out to Bentancur, who passed back to the Polish goalkeeper despite Taremi being just on front of goal.
The Iranian quickly pounced to prod past Szczesny for his first Champions League goal.
Porto pressed forward with Juventus almost conceding a second on 23 minutes as Szczesny cleared straight to Sergio Oliveira whose shot was deflected away from goal.
To add to Andrea Pirlo’s woes captain Giorgio Chiellini limped off 10 minutes later with defender Merih Demiral coming off the bench.
Pirlo had juggled Juve’s defence with Leonardo Bonucci out injured with Alex Sandro returning, playing alongside veteran Chiellini, Matthijs de Ligt and Danilo.
Juve had to wait until four minutes before the break for their first shot on goal with an Adrien Rabiot overhead kick cleared by Porto ‘keeper Agustin Marchesin, but the offside flag had already been raised.
The Italians suffered another terrible start to the second half with Marega picking up a Wilson Manafa cross to finish low past Szczęsny.
Ronaldo had to wait until five minutes after the break to have a shot on goal. Weston McKennie nodded the ball into the path of the Portuguese star, whose weak effort was blocked.
Porto pushed for a third with Szczesny pushing out a Sergio Oliviera effort and clearing away from Jesus Corona.
However, Chiesa pulled Juventus back into the tie following a Rabiot run down the right with a pull back for the Italian to finish off into the corner of the net.
It was the first goal conceded by Porto in the competition at home this season with the former two-time winners holding on for their first win over Juventus in five meetings.