The record 12-time winners had to wait until the 23rd minute to take the lead through Luka Modric, but a run of five goals in 15 minutes either side of half-time sent them through in style.
Karim Benzema put worries about his recent form to bed with a double either side of a Nacho effort, before Ronaldo got in on the act after the break.
The Portuguese climbed highest to power a header into the corner from an inviting Marcelo cross.
And the 32-year-old, who has only scored once in eight La Liga appearances this season, scored his eighth Champions League goal this term with an excellent left-footed finish from a tight angle.
Five-time champions Liverpool threw away a last-16 spot as Sevilla roared back from three goals down at half-time to draw 3-3.
Liverpool looked to be cruising into the knockout stage for the first time since 2008/09 when Roberto Firmino and Sadio Mane both scored from flicked-on corners.
A rout similar to the 7-0 thrashing of Maribor in Slovenia earlier in the group phase looked on the cards when Firmino tapped in number three, but Sevilla staged a stirring second-half comeback.
Wissam Ben Yedder beat Alberto Moreno to nod in a free-kick, before slotting in a penalty.
And Argentinian Guido Pizarro struck in the third minute of injury-time to complete the fightback and leave Jurgen Klopp’s visitors deflated.
Elsewhere in Group E, Russian champions Spartak Moscow saw their chances hit by an injury-time equaliser in a 1-1 home draw with Maribor.
Sevilla will book a last-16 spot for the second straight season if they can win in Maribor on the final matchday in two weeks’ time, while Liverpool have to avoid defeat at home to Spartak.
Lorenzo Insigne inspired Italian Serie A leaders Napoli to a 3-0 victory over Ukrainians Shakhtar Donetsk that kept their hopes alive in Group F.
Winger Insigne made the difference with a magnificent individual effort in the 56th minute, dancing past two defenders before curling into the top corner from 25 yards out.
Further late goals from Piotr Zielinski and Dries Mertens gave their goal difference a boost.
Napoli need City to beat Shakhtar in the final round of games and see off Feyenoord in Rotterdam to progress.
Last season’s semi-finalists Monaco are out of Europe altogether, after a woeful performance and 4-1 home loss to RB Leipzig.
The French champions saw the German tournament debutants race into a 3-0 lead through a Jemerson own goal and a Timo Werner brace, and although Radamel Falcao pulled one back, Naby Keita rounded off a stunning win that keeps Leipzig in the hunt.
Leipzig need to better Porto’s result on the last matchday. The Bundesliga runners-up host Besiktas, while two-time European champions Porto take on Monaco.