document: 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.
  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.
  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."
  Match ends, FC Porto 0, Juventus 2.
  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.
  Substitution, Juventus. Dani Alves replaces Stephan Lichtsteiner.
  Substitution, FC Porto. Diogo Jota replaces Yacine Brahimi.
  Goal!  FC Porto 0, Juventus 1. Marko Pjaca (Juventus) right footed shot from the centre of the box to the bottom left corner.
  Hand ball by Soares (FC Porto).
  Foul by Gonzalo Higuaín (Juventus).
  Jesús Manuel Corona (FC Porto) wins a free kick in the defensive half.
  Substitution, Juventus. Marko Pjaca replaces Juan Cuadrado.
  Attempt missed. Gonzalo Higuaín (Juventus) right footed shot from outside the box is close, but misses to the right. Assisted by Paulo Dybala.
  Foul by Stephan Lichtsteiner (Juventus).
  Yacine Brahimi (FC Porto) wins a free kick in the defensive half.
  Attempt missed. Gonzalo Higuaín (Juventus) right footed shot from the centre of the box misses to the left. Assisted by Juan Cuadrado with a cross.
  Foul by Giorgio Chiellini (Juventus).
  Soares (FC Porto) wins a free kick on the right wing.
  Miralem Pjanic (Juventus) wins a free kick in the defensive half.
  Foul by Danilo Pereira (FC Porto).
  Substitution, FC Porto. Jesús Manuel Corona replaces Rúben Neves.
  Attempt missed. Sami Khedira (Juventus) right footed shot from outside the box is close, but misses to the left.
  Attempt missed. Paulo Dybala (Juventus) left footed shot from the centre of the box misses to the right. Assisted by Alex Sandro with a cross.
  Corner,  Juventus. Conceded by Miguel Layún.
  Attempt blocked. Paulo Dybala (Juventus) right footed shot from the right side of the box is blocked. Assisted by Miralem Pjanic.
summary: 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.