Värdarna såg vänster-back Alex Telles avfärdas efter två bokningar i en 74-sekunders trollformel, den andra efter en vild glidande tackling på Stephan Lichtsteiner på 27 minuter.
Hans sida tillbringade långa trollformler i sin egen hälft och överlevde en Paulo Dybala strejk mot posten före intervallet.
Men Juve - som hade 77% innehav - bröt igenom när Pjaca körde lågt i nätet fem minuter efter att ha kommit på och Alves slutade från sex yards 80 sekunder efter sin egen introduktion.
Målen säkerställde Juves fjärde på varandra följande 2-0 seger på vägen i alla tävlingar och deras fördel nu ser enorm före avkastningen den 14 mars. Annat än ett straff straff straffar nederlag till Inter Milan i december, den sista gången den gamla damen förlorade på hemmaplan var i augusti 2015.
I Porto var den italienska sidan bättre innehav när Telles förlorade kontrollen, först befläckade Juan Cuadrado innan hacka Lichtsteiner ner utan någon uppenbar fara. Vänstersidan var tydligt känslosam när han gick till tunneln med skjortan som täckte en stor del av ansiktet.
Det tillät Juve att helt dominera, även om Nuno Espírito Santos sida förbättrades efter pausen och såg ut som de kan hålla ut, distribuera en kompakt 4-4-1 formation för att kväva Serie A ledare.
Men med spelet i sitt sista kvartal, Pjaca gynnats av en ricochet utanför Miguel Layun - som kom på vänster-back efter Telles uppsägning - att slå sitt första mål sedan gå med i klubben i juli tidigare Iker Casillas.
Alves sänkte Alex Sandros leverans och fastnade på 74 minuter för att dra åt Juves grepp. Massimiliano Allegris sida har sju poäng på toppen av Italiens toppnivå och förblir obesegrad i Champions League, vilket ökar deras förhoppningar om en första seger i tävlingen sedan 1996.
Juventus midfielder Sami Khedira: "Jag tror att vi kan vara lyckliga i kväll. Det är ett riktigt bra resultat. Efter det röda kortet var vi tvungna att vinna det här spelet. Vi spelade 90 minuter med kontroll och tålamod.
"Vi är glada för ikväll men om tre veckor måste vi vara mycket försiktiga för spelet eftersom nu är de arga. Vi vet att fotboll är galet, allt kan hända.
"Ibland har man en känsla och i år har jag en riktigt bra känsla."
Juventus manager Massimiliano Allegri: "Det här laget har fortfarande gott om utrymme för förbättringar men grabbarna visade stor mognad ikväll. "Vi går in i en avgörande period av säsongen och vi måste närma oss den med entusiasm, beslutsamhet och vara så kliniska som möjligt.
"Men vi kan inte tro att 2-0 räcker för att klara oss igenom. Vi måste ta hand om återkomsten som om den fortfarande är noll."
Matchändar, FC Porto 0, Juventus 2.
Andra halvlek, FC Porto 0, Juventus 2.
Handboll av Giorgio Chiellini (Juventus).
Marcano (FC Porto) visas det gula kortet.
Gonzalo Higuaín (Juventus) vinner en frispark i anfallshalvan.
Foul av Felipe (FC Porto).
Försök missade. Sami Khedira (Juventus) höger fotade skott från mitten av lådan är nära, men missar till vänster. Hjälpt av Marko Pjaca med en genomgångskula.
Ersättning, Juventus. Claudio Marchisio ersätter Paulo Dybala.
Héctor Herrera (FC Porto) visas det gula kortet för en dålig foul.
Marko Pjaca (Juventus) vinner en frispark i den defensiva halvan.
Foul av Héctor Herrera (FC Porto).
Hörnet, FC Porto. Förföljd av Mario Mandzukic.
Hörnet, Juventus. Förföljd av Felipe.
Offside, FC Porto. Iker Casillas försöker en genom boll, men Soares fångas offside.
Foul av Gonzalo Higuaín (Juventus).
Maxi Pereira (FC Porto) vinner en frispark i den defensiva halvan.
Hörnet, Juventus. Förföljd av Felipe.
Försök blockerat. Miralem Pjanic (Juventus) höger fotade skott från höger sida av lådan är blockerad. Hjälpt av Paulo Dybala.
Hörnet, Juventus. Förföljd av Marcano.
Mål!  FC Porto 0, Juventus 2. Dani Alves (Juventus) vänster fotade skott från mitten av lådan till nedre vänstra hörnet. Hjälpt av Alex Sandro med ett kors.
Ersättning, Juventus. Dani Alves ersätter Stephan Lichtsteiner.
Ersättning, FC Porto. Diogo Jota ersätter Yacine Brahimi.
Mål!  FC Porto 0, Juventus 1. Marko Pjaca (Juventus) höger fotade skott från mitten av lådan till nedre vänstra hörnet.
Handboll av Soares (FC Porto).
Foul av Gonzalo Higuaín (Juventus).
Jesús Manuel Corona (FC Porto) vinner en frispark i defensiva halvan.
Ersättning, Juventus. Marko Pjaca ersätter Juan Cuadrado.
Försök missade. Gonzalo Higuaín (Juventus) höger fotade skott utanför lådan är nära, men missar till höger. Hjälpt av Paulo Dybala.
Foul av Stephan Lichtsteiner (Juventus).
Yacine Brahimi (FC Porto) vinner en frispark i defensiva halvan.
Försök missade. Gonzalo Higuaín (Juventus) höger fotade skott från mitten av lådan missar till vänster. Hjälpt av Juan Cuadrado med ett kors.
Foul av Giorgio Chiellini (Juventus).
Soares (FC Porto) vinner en frispark på höger vinge.
Miralem Pjanic (Juventus) vinner en frispark i den defensiva halvan.
Foul av Danilo Pereira (FC Porto).
Ersättning, FC Porto. Jesús Manuel Corona ersätter Rúben Neves.
Försök missade. Sami Khedira (Juventus) höger fotade skott från utsidan lådan är nära, men missar till vänster.
Försök missade. Paulo Dybala (Juventus) vänster fotade skott från mitten av lådan missar till höger. Hjälpt av Alex Sandro med ett kors.
Hörnet, Juventus. Förföljd av Miguel Layún.
Försök blockerat. Paulo Dybala (Juventus) höger fotade skott från höger sida av lådan är blockerad. Hjälpt av Miralem Pjanic.
Substitutes Marko Pjaca och Daniel Alves slog mål inom två minuter av varandra som Juventus straffade 10-man Porto för att ta hand om deras Champions League sista 16 slips.