Porto, who played with 10 men from the 27th minute after Alex Telles was sent off, had defended manfully for 70 minutes, but two goals in three minutes look to have ended their hopes of making it through.
Juventus, unbeaten at home this season, take a two-goal advantage, and two away goals, back to Turin, and will now be heavy favourites.
Porto were up against it from the moment Alex Telles was sent off with more than an hour left to play, the Brazilian full-back costing his team-mates with two ludicrous tackles.
Booked in the 26th minute for a spiteful tackle on Juan Cuadrado, it took him just a few seconds to earn a second yellow card, this time for a pointless slide to fell Stephan Lichsteiner. On both occasions the Juventus man was going nowhere, the tackles were unnecessary, and the cards justified.
From that point on it was one-way traffic. Iker Casillas made a fine save to deny Gonzalo Higuain via a deflection, and Paulo Dybala struck the post, while the latter also had a strike ruled out for a marginal offside.
Porto, who had withdrawn striker Andre Silva after the red card, offered little going forward, content to sit back and attempt to deny the Italians an away goal.
They did go close early in the second half when captain Hector Herrera headed just wide from close range, but the Portuguese side didn’t manage a single shot on target.
The hosts did defend well, and until Pjaca scored his first goal for the club they had kept Juventus to a handful of half-chances.
But when a lucky break saw the ball fall to the substitute, he fired into the bottom corner to finally end Casillas’ resistance.
If the first goal knocked the stuffing out of Porto, the second was the killer. Dani Alves, who had only been brought on 80 seconds earlier, arrived in the box, controlled a cross with his chest, and fired into the net.
It was a brilliant finish, and the end of Porto’s realistic hopes in the tie.
Sami Khedira was close to making it three when he linked up beautifully with Higuain, but flicked the finish just wide of the far post with his former Real Madrid team-mate Casillas beaten.
But Juventus, with their brilliant home record, will be confident of progressing after a very comfortable night in Portugal.