Sergio Oliveira’s extra-time free-kick sent twice former winners Porto through to the quarter-finals as the tie finished 4-4 on aggregate.
Leading 2-1 from the first leg in Portugal, Oliveira’s first-half penalty increased Porto’s advantage but Juventus levelled the tie through two goals from Federico Chiesa, which came either side of Porto striker Mehdi Taremi’s red card.
🔥 Juventus 3-2 Porto = a Champions League classic?⏰1⃣9⃣ Juventus 0-1 Porto (agg: 1-3)⏰4⃣9⃣ Juventus 1-1 Porto (a… https://t.co/1D6CILW3h5
— UEFA Champions League (@ChampionsLeague) 1615333069000
Oliveira then rifled home a low free-kick on 115 minutes, which passed through the legs of Ronaldo, with Adrien Rabiot’s header in reply coming in vain for Juventus.
Juventus had been counting on Portuguese striker Ronaldo, the competition’s record goalscorer, and in-form Spaniard Alvaro Morata, who had scored six goals in the competition this season, to pull them through.
But Juventus’ Champions League heartache stretching back 25 years continued, falling in the first knockout round the second consecutive year after losing to French club Lyon last sesaon.
🗒️ MATCH REPORT: Sérgio Oliveira sinks Juventus in Turin to send Porto to quarter-finals…🔥 Sum up this game in three words!#UCL
— UEFA Champions League (@ChampionsLeague) 1615331719000
Andrea Pirlo had regained several injured players including midfielder Arthur and defender Leonardo Bonucci, but captain Giorgio Chiellini remained on the bench with Danilo suspended.
Porto goalkeeper Agustin Marchesin produced a sharp early save to turn away a Morata header, while Taremi nodded against the crossbar at the other end in a lively start to the game.
The Italian champions fell behind on the night when Merih Demiral conceded a penalty after bundling over Taremi in the box with Dutch referee Bjorn Kuipers pointing to the spot.
Oliveira made no mistake, sending Wojciech Szczesny the wrong way to give the visitors a 3-1 advantage overall.
🔵⚪️ Sum up this Porto display in one word…#UCL https://t.co/FZgtHVyhLH
— UEFA Champions League (@ChampionsLeague) 1615330462000
Marchesin continued his heroics, the Argentine blocking from Morata on 26 minutes and Rabiot minutes later after the French midfielder took aim from distance.
Juve hit back after the break thanks to Chiesa’s double, the first on 49 minutes when Ronaldo controlled and knocked it back for Chiesa to curl in past Marchesin from a tight angle.
Porto soon went a man down with Taremi sent off for two quick yellow cards, the second for recklessly kicking the ball away.
🔵⚪️ Porto = quarter-finalists! 🎉🎉🎉#UCL https://t.co/ouSwOnK0U1
— UEFA Champions League (@ChampionsLeague) 1615330424000
Despite the Iranian’s absence Porto managed to hold on, with Pepe intervening brilliantly to force Chiesa into striking the post after rounding Marchesin.
Chiesa made no mistake just after the hour getting his head to another perfect Juan Cuadrado cross which Marchesin again got a hand to but could not stop to pull the sides level 3-3 on aggregate.
Matthijs de Ligt and Weston McKennie came off the bench with 15 minutes to go in place of Bonucci and Aaron Ramsey.
Ronaldo missed a chance to add to his tally of 134 Champions League goals after heading a Cuadrado delivery wide with 12 minutes to go.
It was end to end action with Marchesin denying Chiesa a hat-trick, while Morata had a goal ruled out for offside in injury time before Cuadrado was desperately unlucky to see his curling shot smack back off the bar.
Porto had the best chance of the first 15 minutes in extra time with Szczesny blocking a Moussa Marega header.
But Oliviera won a free-kick and fired in low to beat Szczesny on 115 minutes amid wild celebrations from the Portuguese bench.
Two minutes later Rabiot headed Juventus back into contention but the hosts could not snatch another goal as their European adventure ended prematurely once more.