Despite enjoying plenty of possession in a first half that saw the hosts squander a number of chances, their bid ended when right-back Maxi Pereira saw red after handling Gonzalo Higuain’s goal-bound shot five minutes before the break.
Romanian referee Ovidiu Hategan immediately pointed to the spot and Argentinian playmaker Dybala stepped up in confident fashion to drill his effort into the bottom right corner as Iker Casillas dived the other way.
Juventus stretched their unbeaten home record in Europe to 21 games, although that could come under threat depending on who the 2015 finalists are paired with in Friday’s quarter-final draw.
The last time Juventus suffered a home defeat in Europe was a 2-0 Champions League loss to Bayern Munich, in the quarter-finals, in April 2013.
Allegri deployed an attack-minded 4-2-3-1 formation that saw Higuain lead the Turin giants’ attack at Juventus Stadium.
But it was Dybala, whose only previous Champions League goal this campaign came in a 4-0 win at Dinamo Zagreb last September, who had the majority of the chances.
The Argentinian had spoken on Monday of his desire to add to his tally in Europe, but fired wide twice in the opening stages as Juventus set the tone.
At the other end, Brazilian Francisco Soares curled directly into Gianluigi Buffon’s arms, but it was one of too few opportunities for the visitors.
Mario Mandzukic’s header was smothered by Spanish goalkeeper Casillas, who was making a record 175th appearance in European competition and overtook AC Milan great Paolo Maldini (174).
Dybala then failed to make contact with Higuain’s delivery on the edge of the box and after turning provider, Ivan Marcano did well to intercept Dybala’s cross as Mandzukic hovered.
The imposing Croatian forward went closer with a header whistling wide of the far post from a corner, before Pereira threw himself in spectacular fashion to block Higuain’s shot with his hand after Alex Sandro’s header was parried by Casillas.
That left the visitors a man down and Dybala made no mistake from the spot to claim his third goal in the competition.
Juve could have had a second goal just after the restart but Casillas produced a fine reflex save at his near post to stop a wayward header by Porto midfielder Danilo.
Minutes later Buffon rushed out to close down Soares after he escaped Sandro to fire an angled shot wide of the ‘keeper’s far post.
Allegri replaced Juan Cuadrado with Marko Pjaca for the start of the second half and the Croatian starlet saw an angled effort spin past Casillas’s far post after he controlled well under pressure on the edge of the area.
Higuain, on 66 minutes, then fired just wide after holding off two markers in the area in what was Juve’s last real chance to add to their tally.