Manchester City led by two goals three times but Karim Benzema's double ensured the Spanish side remain in touching distance.
Article top media content
Manchester City will take a 4-3 lead to Real Madrid for their UEFA Champions League semi-final return after one of the competition's great matches.
2' De Bruyne heads in earliest Champions League semi-final goal
11' Jesus fires second goal from the Belgian's cross
33' Benzema volleys Madrid back into the game
53' Pinpoint Fernandinho cross headed in by Foden
55' Vinícius Júnior streaks clear and finishes calmly
74' Stunning Bernardo Silva strike makes it 4-2
82' Benzema's Panenka penalty completes scoring
Match in brief: City on top after pulsating first leg
Carlo Ancelotti's side would have been aware what awaited them in Manchester but they could not contain the vibrant hosts early on. Inside two minutes, Riyad Mahrez weaved inside from the right touchline and crossed for Kevin De Bruyne to head in. The Belgian schemer was at his unplayable best and quickly turned provider, crossing for Gabriel Jesus, who turned David Alaba before sweeping in the second goal.
Mahrez should have made it three and Phil Foden fired wide as Madrid appeared punch-drunk. However, as against Chelsea in their last European game, that was when they were at their most dangerous. Again it was Karim Benzema who stepped up, guiding Ferland Mendy's cross in off the far post for his 40th goal of the campaign in all competitions.
The chances flowed freely again after the break as the sides continued to slug it out. Mahrez raced clear to smack the post before Foden made it 3-1 from Fernandinho's sublime cross but City's joy was short-lived as Vinícius Júnior escaped Fernandinho within two minutes on the way to a wonderful solo effort.
Still neither side relented. Bernardo Silva was next in on the act, thumping a drive past Thibaut Courtois from 20 metres, but Pep Guardiola's charges could not keep hold of the two-goal advantage again as Aymeric Laporte's handball gave Benzema the chance to become the outright top scorer in the competition this season. The French striker's Panenka penalty summed up a sensational contest, with the second instalment to come at the Santiago Bernabéu next Wednesday.
PlayStation® Player of the Match: Bernardo Silva (Man. City)
"An outstanding all-round performance. He pressed relentlessly and used the ball intelligently. His performance was summed up by the outstanding goal and then a clearance in his own penalty area minutes later."
UEFA Technical Observer panel
Matthew Howarth, Man. City reporter
It's advantage City after a breathless, thrill-a-minute first leg in east Manchester. The Premier League leaders looked capable of winning by three or four clear goals at times, but this Madrid side just don't know when they're beaten and will fancy their chances of turning the tie around after breaching City's defence on three occasions. It might not be another seven-goal thriller but the second leg promises to be no less dramatic.
Simon Hart, Real Madrid reporter
Madrid started the match with the earliest pair of goals conceded in their long history in this competition. They ended it with Benzema's 14th goal of this European campaign (and 41st overall), courtesy of his ice-cool penalty. In between were fabulous strikes by Benzema and Vinícius Junior but also some less-than-authoritative defensive work. Ultimately, though, the Spanish champions-elect have shown their ability to bounce back off the ropes and deliver blows of their own. Their mentality is as formidable as their masterful centre-forward. Roll on next Wednesday.
Phil Foden, Man. City midfielder: "For the fans watching, it was obviously a great game of football. We know that if we give the ball away in those areas, they're going to punish us. It's something we need to work on. It was end to end at times. We had chances to kill them off and, in these games, you have to take those chances."
Bernardo Silva, Man. City midfielder: "For the first 20 minutes we were so good – the way we pressed and controlled the game. Unfortunately, we were not able to take advantage of the two-goal leads we had. We've still won the first game. We could have taken more of our chances but it was a very, very good game from us."
Karim Benzema, Real Madrid striker: "A defeat is never good because we are really excited about the Champions League. We lacked a bit of everything in this game – ambition, pressure, confidence. The most important thing is we never lay down our arms, we are all in this until the end. Now we have to go to the Bernabéu and we are going to do something magical."
Vinícius Júnior, Madrid striker: "We were up against a great team with a great coach – it is very difficult playing here. You have to keep at it. For the second leg we have to keep calm, work and see what we have to improve to get through – a bit of everything, especially at the start. We're not happy with the defeat but at the Bernabéu, the fans come and make the difference and the next game will be no different."
Rio Ferdinand, BT Sport
"Breathtaking, sensational, want more do you want? The game ebbed and flowed. City will be frustrated and Real Madrid will be buoyed by the way they came back."
- De Bruyne's goal after 94 seconds was the quickest ever in a Champions League semi-final and City's earliest ever in the competition.
- Nine of De Bruyne's 12 Champions League goals have come in the knockout rounds, including all of his last seven.
- Jesus has now scored in each of his three appearances for City against Madrid in the UEFA Champions League.
- This was the earliest that Madrid have conceded twice in a Champions League match; the previous quickest was twice in 16 mins against Atlético in May 2017.
- Benzema now has 14 goals in this season's competition, moving ahead of Robert Lewandowski at the top of the scorer's chart.
- Benzema has scored nine goals in his last four matches in the Champions League.
- Toni Kroos made his 15th appearance in a European Cup/UEFA Champions League semi-final match, equalling Thomas Müller's record for a German player.
- Madrid have now scored (39) and conceded (35) the most goals in Champions League semi-finals.
Kevin De Bruyne – 11
Bernardo Silva – 11
Karim Benzema – 10
Man. City: Ederson; Stones (Fernandinho 36), Rúben Dias, Laporte, Zinchenko; De Bruyne, Rodri, Bernardo Silva; Mahrez, Jesus (Sterling 83), Foden
Real Madrid: Courtois; Carvajal, Éder Militão, Alaba (Nacho 46), Mendy; Valverde, Kroos, Modrić (Ceballos 79); Rodrygo (Camavinga 70), Benzema, Vinícius Júnior (Asensio 88)