The visitors took the lead inside 20 minutes through Sergio Oliveira's penalty.
Merih Demiral brought down Mahdi Taremi in the area, and the striker stepped up to fire home confidently.
Within the first 10 minutes of the second half, momentum had completely swung Juve's way. Cristiano Ronaldo laid off for Federico Chiesa, a scorer in the first leg, to level with a cultured finish before Taremi was sent off for two quick bookings.
Chiesa thought he had completed the turnaround but he was denied by Pepe with the goal gaping. The 23-year-old did add a second moments later, heading from Juan Cuadrado's pinpoint cross.
In stoppage time, Alvaro Morata put the ball into the net only to be called offside before Cuadrado crashed an effort against the bar, but the two sides couldn't be separated.
Halfway through the first period of extra time, Moussa Marega squandered a great chance, heading straight at Wojciech Szczesny after a short corner.
Substitutes Dejan Kulusevski and Marko Grujic each had chances to win the game before Oliveira stunned everyone with a free-kick from distance.
Juve were done for, despite Adrien Rabiot hitting back with a header to offer late hope to no avail.
✔️ Juan Cuadrado: 9.7
Cuadrado's crosses were perfect all night. He played in no fewer than 32 from that side, which allowed Juve to put Porto's defence under constant pressure. He also created the most Big Chances in the game (3) and completing the most dribbles, taking a massive 160 touches.
Not only did he play a crucial role in Juve's initial fightback by setting up the equaliser, but he also gave Ronaldo a chance to win the match before crashing an effort against the bar himself.
❌ Mehdi Taremi: 5.2
The man who opened the scoring in the first leg and winner of the penalty for Porto, Taremi was a real hero for his side until early in the second half. Then everything completely flipped.
Two quick-fire bookings, including one for petulantly kicking the ball away, saw him sent off and allowed Juve to build a head of steam which ultimately saw Chiesa wrestle control of the tie away from Porto. It was down to Oliveira to save his blushes in the end.
It was a damaging evening on a personal level, thanks to a mad couple of minutes.
⭐ Adrien Rabiot: 9.8
Rabiot gave Juve an instant reply after Oliveira's free-kick and impressed throughout as his side dominated after the red card. He deserved more on the night for his performance, which was complete in every sense of the word.
Only Arthur completed more passes in the final third than the Frenchman's 41, while he took five shots in the game, more than anyone else on the pitch.
Porto somehow pulled themselves through, but Rabiot was superb.