Twice the English champions took the lead against the run of play, the second time with only four minutes remaining, but credit to Madrid for battling back to not only level but snatch a deserved winner on the stroke of full time.
As the first half ended all square there were no signs of the drama to come. Madrid had been the better side with City keeper Joe Hart keeping them in the game, with only the driving runs of Yaya Toure causing any danger for Madrid.
The same pattern continued after the break with Madrid pressing forward constantly, but with no reward.
Then on 69 minutes they were hit on the counter attack as Toure drove forward before releasing the ball to substitute Edin Dzeko who coolly finished.
Toure then had an opportunity to double City’s advantage but hit the side netting and almost immediately Madrid levelled. Marcelo finally found his range after going close a couple of times before with a fierce shot from the edge of the penalty area.
The odds now tipped in favour of the home side but again they were caught out as Aleksandar Kolarov’s free kick curled beyond everybody and into the far corner.
But Madrid showed their character as they restored parity for a second time with substitute Karim Benzema firing low past Joe Hart.
Then, heart-break for City as Ronaldo had the final word on 90 minutes with Madrid still looking for a winner as his speculative shot found its way into goal helped by Vincent Kompany’s failure to head the ball clear deceiving Hart.
Referee: Damir Skomina (SVN)
Venue: Bernabéu Stadium
Real Madrid scorers: Marcelo 75, Benzema 87, Ronaldo 90
Man City scorers: Dzeko 69, Kolarov 86
Yellow cards: Garcia (MANC), Kompany (MANC), Dzeko (MANC)