The visitors had the first chance of the night as Max Meyer played the ball forward for Eric Choupo-Moting, but his finish was a fraction wide.
It was Schalke who broke the deadlock though when Klaas-Jan Huntelaar flicked the ball in for Christian Fuchs to smash past Iker Casillas from close range with just under 20 minutes gone.
The defending European champions needed just five minutes to get back on level terms though as Toni Kroos delivered a corner, which Cristiano Ronaldo rose highest to head in.
The German side restored their lead before the break when Huntelaar headed the ball against the crossbar, before pouncing on the rebound moments later.
However, Ronaldo found the back of the net with another header in stoppage time before the interval after Fabio Coentrao provided the cross for the Portugal international.
The La Liga side appeared to put the tie beyond doubt less than 10 minutes into the second half when Karim Benzema burst into the box, rounding the last defender before firing into the bottom corner.
The scores were level again though just four minutes later as teenage midfielder Leroy Sane unleashed a curling effort from just outside the box, getting the better of Casillas.
Real pushed hard to add a fourth on the night, but Alvaro Arbeloa and Kroos both saw effort saved with a little over 20 minutes to go.
Gareth Bale attempted to head in from a Kroos corner after the German’s effort had been tipped behind, but the Welshman’s finish was a fraction high.
Bale was on the attack again a few minutes later, this time getting his shot on target as he looked for the top corner from 20 yards out, but the Schalke keeper watched it all the way to make the stop.
Isco had a chance to put the result beyond doubt with six minutes to go when he attempted a low effort, but it just curled away from the post.
The miss allowed Schalke to quickly head down the other end though, with Huntelaar weaving past a couple of defenders before squeezing the ball beneath the crossbar, scoring his second of the night against his former club.
Knowing that a fifth would put them through on away goals, Schalke continued to press, but Casillas stretch across to prevent Sane adding his second, as the youngster let a shot fly from range.
Huntelaar charged forward again in stoppage time as the Bundesliga side pushed for an aggregate equaliser, pulling it back for Benedikt Howedes, but Casillas made a diving save to keep it out, ensuring that Real held on to reach the last eight.
For more sports news visit allSports.com.gh
This article has 0 comment, leave your comment.