Looking to avenge their last-four defeat at the hands of the Germans last season, the Spanish giants flew out of the traps and were ahead within three minutes when Gareth Bale poked home from Dani Carvajal's pass. Isco doubled Real's lead after 27 minutes as his low shot from the edge of the area curled into the bottom corner. Ronaldo then scored his 14th Champions League goal of the campaign to match the competition's record mark for goals in a season, set by Barcelona's Lionel Messi two years ago.
However, Real's night was soured somewhat as Ronaldo had to be substituted late on due to what appeared to be a minor knee injury.
Madrid had also suffered a disruption just before the game as Angel di Maria was ruled out with gastroenteritis, but they didn't miss a beat without the Argentinian as his replacement Isco pulled the strings in midfield and they started with great intensity. Bale opened the scoring with his 17th goal of the season as he controlled Carvajal's low centre before finishing first time.
Dortmund goalkeeper Roman Weidenfeller then had to make two brilliant saves from a free-kick each from Ronaldo and Bale. However, there was nothing the German international could do to prevent Isco's precise low effort finding its way into his bottom right-hand corner.
Dortmund posed a far greater threat on the Real goal after the break, but that also left them open on the counter-attack,and Bale nearly scored again within three minutes of the restart as Weidenfeller blocked the Welshman's effort. Pierre-Emerick Aubameyang had been handed the difficult task of replacing the suspended Robert Lewandowski up front for Dortmund, but he came close to bringing his side back into the game with a shot across goal that flew just wide of the target.
Henrikh Mkhitaryan then wasted another good opening for the visitors as his shot was deflected wide by Pepe and within two minutes Dortmund were punished as Ronaldo made it 3-0. The Portuguese was played in by Luka Modric and showed quick feet to side-step Weidenfeller and roll the ball into an empty net.
Dortmund continued to push for an away goal and only an incredible block by Pepe prevented Mkhitaryan, after Iker Casillas could only parry a low cross from the right.
Weidenfeller was then forced into more heroics to keep the score down as he tipped over Benzema's sweetly-struck half-volley from the edge of the area.
Ronaldo had to be replaced by Brazilian midfielder Casemiro ten minutes from time, but the former Manchester United man was able to walk freely as he made his exit, suggesting he should be fit for Real's trip to Real Sociedad on Saturday.