Ronaldo, so often Real’s saviour, cancelled out Wolfsburg’s two-goal advantage within 88 first-half seconds at the Bernabeu, and his free-kick in the 77th minute proved decisive as Real booked their spot in the last four in style.
Their German opponents would have felt optimistic of sealing a first-ever semi-final spot in Europe’s elite club competition after winning 2-0 at home last Wednesday, but they were simply unable to contain Ronaldo.
As anticipated, the visitors were penned deep inside their own half from the off, and they nearly fell behind on the night inside five minutes when Sergio Ramos’ header struck the bar.
An interception from Wolfsburg defender Dante prevented Ronaldo from running clean through on goal, but there was no stopping the Real talisman from opening the scoring in the 16th minute.
Dani Carvajal’s attempted pass came straight back to him, via a defender’s legs, before his ball across goal allowed Ronaldo a tap-in at the back post.
Vieirinha’s last-ditch header stopped Ronaldo from immediately doubling his tally but he did so anyway from the following corner, running to the near post and flicking a glancing header past Wolfsburg goalkeeper Diego Benaglio.
The visitors had seen their first-leg lead wiped out inside a minute and a half, although they managed to soak up the pressure thereafter.
They might have even gone ahead again in the tie, only for Real goalkeeper Keylor Navas to tip over Luiz Gustavo’s swirling shot from distance.
Ramos hit the woodwork for the second time on the night, powering a header off the post from Toni Kroos’ corner on the hour mark.
But Ronaldo put them ahead for the first time in the tie and completed his treble with just 13 minutes remaining, as his free-kick went through a pitiful Wolfsburg wall to leave Benaglio with no chance.
Benaglio saved brilliantly from Karim Benzema and substitute Jese Rodriguez late on, but it mattered little as Real closed out victory to move to within two matches of a second final appearance in three years.
Keylor; Carvajal, Pepe, Ramos, Marcelo; Modric (Varane 90), Casemiro, Kroos; Bale, Benzema (Jese 83), Ronaldo.
Casilla, Rodriguez, Lucas, Isco, Danilo.
Benaglio, Vieirinha, Naldo, Dante, Rodriguez, Guilavogui (Dost 80), Gustavo, Bruno Henrique (Caligiuri 72), Arnold, Draxler (Kruse 32), Schurrle.
Casteels, Schafer, Trasch, Knoche.
Viktor Kassai (Hungary)