After Real comfortably won last month’s last 16, first leg in Gelsenkirchen 2-0, Schalke came out fighting at the Bernabeu and took a deserved lead in the 20th minute when a Christian Fuchs shot ricocheted into the net off keeper Iker Casillas.
Ronaldo levelled from a Toni Kroos corner five minutes later before former Real striker Klaas-Jan Huntelaar, who moments earlier had struck a fierce shot against the crossbar, put Schalke 2-1 ahead when he followed up Max Meyer’s saved effort.
Ronaldo struck again from Fabio Coentrao‘s cross on the stroke of halftime — the Portugal captain’s 75th Champions League goal putting him level at the top of the all-time scoring chart with Barcelona forward Lionel Messi.
Both sides continued to attack at every opportunity in the second half and Karim Benzema made it 3-2 in the 53rd minute before Schalke substitute Leroy Sane curled a shot past Casillas in the 57th to make it 3-3.
Huntelaar set up a nervous finish for the home fans when he smashed a brilliant effort in off the bar six minutes from time but Real held out to claim a place in the draw for the last eight on March 20.