Merih Demiral put the Italian champions ahead early on before Ronaldo fired home a penalty to double their advantage with just 10 minutes played.
It was Ronaldo’s 14th league goal of the season and his ninth in the last six Serie A appearances.
Things got worse for Roma towards the end of the first half when winger Nicolo Zaniolo was taken off in tears on a stretcher with a leg injury, but the hosts pulled one back on 68 minutes through a Diego Perotti penalty.
The result leaves Juventus on 48 points at the top of the table at the midway stage of the season, two ahead of Inter Milan, while Roma are fifth on 35 points.
Earlier, Hellas Verona came from behind to beat Genoa 2-1 and rise to eighth in the standings on 25 points, leaving the relegation battling visitors stranded in 18th place with 14 points.