Mehdi Taremi scored after only 61 seconds as Porto caught lacklustre Juventus cold twice to seize the initiative with a 2-1 first-leg win in the UEFA Champions League round of 16.
Porto had never beaten Juve in five European matches, but the Primeira Liga champions made it a miserable return to his homeland on Thursday (AEDT) for Cristiano Ronaldo, who was controversially denied a last-minute penalty by both on-field referee and VAR.
Ronaldo was starved of service as Sergio Conceicao's side showed a far bigger appetite for the fight at Estadio do Dragao, with Taremi gifted a first Champions League goal by a terrible mistake from Rodrigo Bentancur.
Moussa Marega doubled Porto's lead right at the start of the second half, but Federico Chiesa struck eight minutes from time to leave the tie well poised ahead of the second leg on March 9.
Bentancur made it a nightmare start for Juve, failing to get enough on his back pass and allowing Taremi to slide in ahead of Wojciech Szczesny for his fourth goal in as many games.
That early blow failed to jolt Juve into life and Matthijs de Ligt deflected Sergio Oliveira's shot wide after a sloppy pass from a shaky Szczesny.
The Bianconeri lost captain Giorgio Chiellini, who was replaced by Merih Demiral, to a calf injury before Agustin Marchesin was finally called into action, diving to his left to keep out Adrien Rabiot's acrobatic attempt.
Juve were caught napping again at the start of the second half, when Marega's left-footed strike beat Szczesny at his near post after Wilson Manafa cut the ball back at the end of a marauding run.
The impressive Oliveira came close to adding a third Porto goal when his strike was saved by Szczesny, while Bentancur rifled just over the crossbar at the other end in a rare moment of concern for Conceicao's well-drilled side.
Porto looked rock solid but their run of five consecutive Champions League clean sheets ended when Chiesa converted Rabiot's cutback and Marchesin denied Alvaro Morata an equaliser soon after.
Ronaldo wanted a penalty for a challenge from Zaidu Sanusi but referee Carlos del Cerro Grande and the VAR saw it otherwise as Porto held on to their slender advantage.
What does it mean? All to play for in Turin
Porto will travel to Turin next month with the upper hand, but they really could have put one foot in the last eight before heading to Italy.
Juve looked short of ideas for much of the contest, with Porto not letting the Serie A champions settle as they pressed high from the from start and got a very early reward.
Chiesa's away goal, a right-footed finish into the bottom-left corner, finally breached a Porto defence that had not conceded at home in the competition and left the tie in the balance.
Livewire Oliveira a constant threat
Oliveira ran the show for Porto in the middle of the park, showing incredible energy and technical ability in an all-action display.
The midfielder had four shots, two of which were on target, and had 21 touches in the Juve half in a relentless performance, with no Porto player having more than his 54 touches.
No happy homecoming for Ronaldo
At the ground where he scored a Puskas Award-winning goal for Manchester United in 2009, Ronaldo failed to make an impact on this occasion.
Much of the game passed the Portugal captain by with Porto on top. The prolific forward had just one shot and scuffed a late chance to level after Morata's strike was kept out by Marchesin.
Key Opta Facts
- Porto secured their first competitive victory against Juventus in European competition, having failed to win any of their first five encounters with them (D1 L4).
- Porto picked up just their second victory in their last 10 knockout matches in the Champions League, having lost seven of their previous nine.
- Juventus have lost three of their last four Champions League knockout matches (W1), as many as in their previous 14 such games combined (W8 D3 L3).
- Federico Chiesa is the first player, other than Cristiano Ronaldo, to score for Juventus in a Champions League knockout-stage match since Blaise Matuidi in April 2018 (quarter-finals against Real Madrid).
Juve are home to bottom side Crotone in Serie A on Monday, with Porto travelling to Maritimo on the same day.