Mourinho immediately reacted, bringing on Ozil to replace Essien, before Marcelo saw another shot drift high.
It looked like the match would drift to a close with both teams happy with a point until Toure intercepted a short pass in his own half and made a wonderfully leggy sprint before playing in Dzeko, who put City ahead.
The game burst into life and it was the English side who were enjoying the better chances.
Dzeko and Toure went close, as Luka Modric and Benzema were called from the bench for the hosts.
The changes had an immediate effect as Real leveled on 75 minutes when Marcelo, who had previously favored his left, moved onto his right to curl in a long-range shot.
City were now attacking at will and Kolarov took advantage to hit what looked like the winner on 84 minutes from a free-kick wide on the right that evaded Iker Casillas in the Madrid goal.
However, the lead was short-lived during a crazy final five minutes.
It was another substitute in Benzema who turned well before shooting to level on 86 minutes and then Ronaldo, who had started the game on fire, finished it off with the last-minute winner to break English hearts.