Zinedine Zidane's side took a two-goal lead into the return bout which had Luciano Spalletti's Giallorossi chasing the game form the outset.
Roma created a number of chances throughout but were externally wasteful and in the end, it cost them dearly as Real turned on the style late in the contest to continue their unbeaten run in the competition this season.
Edin Dzeko and Mo Salah were at fault for Roma's first-half misses when they were both through on goal but failed to breach Keylor Navas, with the Costa Rican's opposite number Wojciech Szczesny doing his bit down the other end to keep Roma in the tie.
Szczesny, on loan from Arsenal, did well to deny Rodriguez and then Ronaldo early in the second half before Salah missed another gilt-edged chance when one-on-one with Navas.
Lucas Vazquez, who has replaced Gareth Bale, produced some trickery down the right side of the box before firing a cross to Ronaldo who volleyed home from close range for his 90th Champions League goal in the 64th minute.
Ronaldo then turned provider four minutes later when he laid off for Rodriguez who picked his spot and fired between the legs of Szczesny who had now been undone twice in quick succession.
A third goal was up for grabs but Ronaldo inexplicably placed a customary side-footed attempt wide of the mark before Roma were denied a late consolation when Diego Perotti saw his effort fly back off the upright and deflect off an unsuspecting Navas who was able to hold out for a clean sheet.
The match also marked what could quite possibly be Francesco Totti's final Champions League appearance as clouds continue to form over his stellar career with the Roman club.
For Real, it was a seventh win in eight outings in Europe this season as they go after an unprecedented 11th regional title.
2015/16 UEFA Champions League - Round of 16 second leg