Ronaldo ended a run of three games without a goal with a low finish into the bottom corner from 18 yards.
The win was sealed when Roger Ibanez steered a Dejan Kulusevski cross into his own net in the second half.
Reigning champions Juve move above Roma and into third, five points behind Inter and with a game in hand.
It is a sixth consecutive win in all competitions for Andrea Pirlo’s team.
Paulo Fonseca’s Roma could have taken something from the game had they shown the same cutting edge as their opponent.
However, despite plenty of possession, leading to numerous goalscoring chances, they too often missed the target or gave Juve goalkeeper Wojciech Szczesny too easy a job.
Ronaldo remains a cut above
To most strikers, three games without hitting the net is nothing out of the ordinary but for Ronaldo it represents a mini drought, even at the age of 36.
It took him 13 minutes to end that run, using very little backlift but still generating enough power to drive his low shot accurately into the corner from just outside the box after being set up by Alvaro Morata.
He was inches away from a second before the break as his deflected strike from inside the box struck the underside of the bar and bounced down just the wrong side of the goalline.
He was also the man waiting to poke the ball in had Ibanez not got to substitute Kulusevski’s cross first for the second goal.
Ronaldo’s strike extends his lead at the top of the Serie A scoring charts, taking him to 16 from 17 games, two more than Inter’s Romelu Lukaku.