Pep Guardiola's side were ahead within the first two minutes of the first leg in Manchester, with Belgium star Kevin de Bruyne bravely heading them ahead.
The Etihad Stadium was in ecstasy nine minutes later when Gabriel Jesus doubled their lead.
City had chances to go even further in front, but Real striker Karim Benzema dragged the Spanish giants back into the contest with a beautiful cushion finish before half-time.
But City were not done, and regained their two-goal cushion when Phil Foden put them 3-1 ahead shortly after half-time.
In an incredible contest, Vinicius Junior scored again for Real to make it 3-2 just two minutes later.
Back came City again, and Bernardo Silva produced a stunning striker to make it 4-2 with 17 minutes to go.
Yet again, Real Madrid refused to give in. Aymeric Laporte left his arm up as he jumped to challenge Benzema in the box, and was penalised for hand ball. Benzema converted from the penalty spot to make it 4-3.
That was it for goals in the first leg, setting up a mouth-watering return in Spain next Wednesday.
See how the first leg action unfolded in the gallery above. To view the next image, just swipe.