Match ends, FC Porto 0, Juventus 2.
Substitutes Marko Pjaca and Daniel Alves struck goals within two minutes of one another as Juventus punished 10-man Porto to take charge of their Champions League last-16 tie.
The hosts saw left-back Alex Telles dismissed after two bookings in a 74-second spell, the second after a wild sliding tackle on Stephan Lichtsteiner on 27 minutes.
His side spent long spells in their own half and survived a Paulo Dybala strike against the post before the interval.
But Juve - who had 77% possession - broke through when Pjaca drove low into the net five minutes after coming on and Alves finished from six yards 80 seconds after his own introduction.
The goals ensured Juve's fourth successive 2-0 win on the road in all competitions and their advantage now looks huge ahead of the return on 14 March. Other than a penalty shootout defeat to Inter Milan in December, the last time the Old Lady lost on home soil was in August 2015.
Telles' telling moment
In Porto the Italian side were bettering possession when Telles lost control, first fouling Juan Cuadrado before hacking Lichtsteiner down with no apparent danger. The left-back was clearly emotional as he walked to the tunnel with his shirt covering much of his face.
It allowed Juve to totally dominate, though Nuno Espírito Santo's side improved after the break and looked like they may hold out, deploying a compact 4-4-1 formation to stifle the Serie A leaders.
But with the game in its final quarter, Pjaca benefited from a ricochet off Miguel Layun - who came on at left-back after Telles' dismissal - to slam his first goal since joining the club in July past Iker Casillas.
Alves chested down Alex Sandro's delivery and hooked in on 74 minutes to tighten Juve's grip. Massimiliano Allegri's side hold a seven-point lead at the summit of Italy's top tier and remain undefeated in the Champions League, increasing their hopes of a first win in the competition since 1996.
Man of the match - Miralem Pjanic
"I have a good feeling" - the key quotes
Juventus midfielder Sami Khedira: "I think we can be happy tonight. It's a really good result. After the red card we had to win this game. We played 90 minutes with control and patience.
"We are happy for tonight but in three weeks we have to be very careful for the game because now they are angry. We know football is crazy, anything can happen.
"Sometimes you have a feeling and this year I have a really good feeling."
Juventus manager Massimiliano Allegri: "This team still has plenty of room for improvement but the lads showed great maturity tonight. "We're entering a crucial period of the season and we need to approach it with enthusiasm, determination and be as clinical as possible.
"But we can't believe 2-0 is enough to see us through. We have to broach the return as if it's still nil-nil."
- 2Pereira PáezBooked at 45mins
- 5Marcano SierraBooked at 89mins
- 13TellesBooked at 27mins
- 16HerreraBooked at 85mins
- 6NevesSubstituted forJM Coronaat 61'minutes
- 8BrahimiSubstituted forJotaat 73'minutes
- 10André SilvaSubstituted forLayúnat 30'minutes
- 29Francisco Soares
- 12Malheiro de Sá
- 17JM Corona
- 20Brás André
- 30Torres Muñoz
- 26LichtsteinerBooked at 50minsSubstituted forAlves da Silvaat 73'minutes
- 12Lobo Silva
- 7Ju CuadradoSubstituted forPjacaat 67'minutes
- 21DybalaSubstituted forMarchisioat 86'minutes
- 23Alves da Silva
- 25Murara Neto
- Dr. Felix Brych
- Shots on Target
Second Half ends, FC Porto 0, Juventus 2.
Hand ball by Giorgio Chiellini (Juventus).
Marcano (FC Porto) is shown the yellow card.
Gonzalo Higuaín (Juventus) wins a free kick in the attacking half.
Foul by Felipe (FC Porto).
Attempt missed. Sami Khedira (Juventus) right footed shot from the centre of the box is close, but misses to the left. Assisted by Marko Pjaca with a through ball.
Substitution, Juventus. Claudio Marchisio replaces Paulo Dybala.
Héctor Herrera (FC Porto) is shown the yellow card for a bad foul.
Marko Pjaca (Juventus) wins a free kick in the defensive half.
Foul by Héctor Herrera (FC Porto).
Corner, FC Porto. Conceded by Mario Mandzukic.
Corner, Juventus. Conceded by Felipe.
Offside, FC Porto. Iker Casillas tries a through ball, but Soares is caught offside.
Foul by Gonzalo Higuaín (Juventus).
Maxi Pereira (FC Porto) wins a free kick in the defensive half.
Corner, Juventus. Conceded by Felipe.
Attempt blocked. Miralem Pjanic (Juventus) right footed shot from the right side of the box is blocked. Assisted by Paulo Dybala.
Corner, Juventus. Conceded by Marcano.
Goal! FC Porto 0, Juventus 2. Dani Alves (Juventus) left footed shot from the centre of the box to the bottom left corner. Assisted by Alex Sandro with a cross.