The Portugal international fired the hosts in front on 26 minutes, while Rodrigo Bentancur squeezed home the hosts' second seven minutes before half-time.
Juventus added a third before the break when Leonardo Bonucci stooped to head Douglas Costa's cross past goalkeeper Pau Lopez.
Roma pulled one back at the start of the second half but it proved to be only a consolation for the visitors.
Cengiz Under curled a shot from outside the penalty area that hit the underside of the crossbar, bounced down and went in after hitting goalkeeper Gianluigi Buffon.
Maurizio Sarri made several changes to his team, bringing in Buffon, Daniele Rugani, Bentancur and Douglas Costa. Roma were without a host of players due to injury and started with Nikola Kalinic in attack in place of the suspended Edin Dzeko:
Goal shared the two teams:
Roma started the game confidently and managed to push Juventus back, but they were undone when Ronaldo broke the deadlock.
Gonzalo Higuain played the ball out to Ronaldo on the left, and he sprinted towards goal before rifling a shot across goalkeeper Pau Lopez and into the far corner:
Juventus improved after the goal and added two more before half-time. The second arrived from the lively Bentancur after good work from Costa. The Uruguayan was played into the penalty area by Costa, went past Gianluca Mancini and scuffed a finish that sneaked just inside the post.
Italian football writer Adam Digby praised Bentancur for his performance:
Costa then forced Lopez into a save with a stinging shot after Bryan Cristante had gifted the Brazilian the ball, and Sarri's side looked a threat every time they attacked.
Bonucci added a third in stoppage time at the end of the first half. Costa floated a cross towards the back post for the centre-back to direct a firm header past Lopez.
Italian football writer Carlo Garganese was not too impressed with the defending on show:
Carlo Garganese @carlogarganese
Florenzi’s defending on Ronaldo’ goal again illustrates a big concern for Italy for Euro 2020. Florenzi is not a RB, Di Lorenzo is having a nightmare atm, De Sciglio is always injured. The left back options are not much better. The only full back I like is Spinazzola #JUVROM
The second half started in lively fashion with chances at both ends. Roma ought to have pulled one back but saw Lorenzo Pellegrini denied by Buffon, while Kalinic hit the post on the follow-up.
Juventus then raced down the other end of the pitch, with Ronaldo crossing for Higuain to direct a header on to the crossbar.
Roma came back at Juventus again and finally scored after a great effort from Under. The forward's curling shot beat Buffon but hit the crossbar, bounced down and went in off the goalkeeper.
The chances continued to flow in an entertaining second half. Buffon denied Alessandro Florenzi with a fine save, while Lopez had to be alert to block an effort from Higuain after a good cross from Juan Cuadrado.
Ronaldo came close to a second on 83 minutes with a shot that flew inches wide of the post, and Buffon was needed again in stoppage time to deny Aleksandar Kolarov with a brilliant diving save.