In their first game back since the resumption Maurizio Sarri's side eased past their mid-table hosts, stretching their lead over Lazio, who play next on Wednesday, to four points.
Dybala doubled the lead in the 36th minute, feeding off Federico Bernardeschi's fleet-footed back heel and bending his shot past Lukasz Skorupski from the edge of the area. Ronaldo saw a second scrubbed off due to Douglas Costa straying offside and Danilo's late red card ended proceedings on a disappointing note.
The Rossoneri scored the only goal before half-time, Samuel Castillejo breaking the deadlock, but were pegged back early in the second period by Marco Mancosu's penalty.
Bottom club Brescia picked up a point against 10-man Fiorentina, taking the lead through Alfredo Donnarumma's spot-kick only for German Pezella to hit back. Martin Caceres earned a second yellow card with 20 minutes to go, but the scoreline remained the same.
Sevilla moved a point clear of Atletico Madrid into third, while the home side put the same distance between themselves in sixth and and Real Sociedad at seventh.
The Yellow Submarine twice gave away the lead, Paco Alcacer's opener cancelled out by Sergio Escudero before Pau Torres and Munir El Haddadi exchanged goals. There was an emotional late cameo for Bruno Soriano, the Villarreal skipper who has spent three years battling back from injury.