Juve shockingly conceded a goal just two minutes into the game as Mehdi Taremi capitalised on a schoolboy error from Rodrigo Bentancur and scored from close range.
Having conceded a goal so early in the game, Juventus struggled to come up with a response. The Serie A side lacked the creativity to find a way past the Porto defence, who did an admirably good job.
Porto doubled their lead a minute into the second half as Moussa Marega made a neat finish following some fine work by Wilson Manafa. Juve, who were dismal throughout, however, managed to half the deficit in the 82nd minute. Federico Chiesa produced a sublime finish after Adrien Rabiot had played the ball into the box.
Speaking after the game, Juventus coach Pirlo said they gave Porto the opener on a 'silver platter' and admitted his team moved the ball around too slowly.
"We had prepared well for this game, it was not the attitude we wanted, but conceding a goal in the opening minute when we handed it to them on a silver platter made everything more difficult," Pirlo told Sky Sport Italia [via Goal].
"When you concede a goal after one minute, a strange one at that, it’s natural the players will lose confidence, especially against a side that knows how to clam up in defence.
"Our approach was wrong after we conceded the goal ... We had planned on attacking the deeper spaces, but if you take too many touches, things get complicated. We weren't smart, the ball was moved around too slowly.
"Porto got the game immediately on the track they wanted. With such a packed fixture list, it’s normal you can’t always maintain absolute focus and the right tempo, but it shouldn’t have happened in the round of 16 of the Champions League."
Juventus will be hoping to turn things around in the second leg, which will be played at the Allianz Stadium, and progress to the quarter-finals.