Pep Guardiola's side ran out 4-3 winners at the Etihad Stadium, but missed a host of chances to put the tie to bed before the semi-final second leg
It is rare that a thrilling 4-3 win in a European semi-final could be described as being like a horror movie for the victors, but that is exactly how it must have felt for Manchester City against Real Madrid.
Time and time again, City had the chance to kill off Madrid.
But time and time again, the Champions League's most notorious beast refused to die.
At times City fans had to cover their eyes, at other moments the adrenalin and the entertainment was unbelievable.
But at the end of a breathless, brilliant 90 minutes, the Premier League champions might regret missing the opportunity to make a sequel irrelevant.
In previous rounds, both Paris Saint-Germain and Chelsea left the door open for the Spanish giants to fight their way back into ties that they looked like losing, and Pep Guardiola has to hope his side have not done the same.
For large parts of what was a stunning game, City were the better side.
The wise old men of Toni Kroos and Luka Modric were made to look like simply old men against the creativity and speed of Kevin De Bruyne and Bernardo Silva in the heart of midfield.
Wingers Phil Foden and Riyad Mahrez were far too sharp and too skilful for the struggling Dani Carvajal and Ferland Mendy.
And perhaps most impressive of all was the sharp and dynamic Gabriel Jesus, who looked every bit the number nine that Pep Guardiola has been without for the past two seasons.
Coming off the back of his four-goal heroics against Watford, the Brazil international was relentless, harassing Eder Militao and David Alaba and not giving them a moment's peace.
Jesus' goal - City's second of the night - was the finish of a natural striker, as De Bruyne's pass deflected into his path, before he turned brilliantly and coolly slotted past Thibaut Courtois.
Madrid were all over the place - conceding two goals in the first 11 minutes of a Champions League game for the first time in their record-breaking history, with De Bruyne's opener the fastest goal ever scored at this stage of the competition.
How City would have loved to have taken a two-goal advantage to Santiago Bernabeu before the game, but given the momentum they had, part of them must wonder how they did not have the tie won inside 45 minutes.
Mahrez fired high into the side-netting, leaving Guardiola fuming on the sidelines, before Foden dragged a shot wide and De Bruyne tested Courtois.
But Karim Benzema was always threatening in the shadows, and when the Ballon d'Or favourite took his first half-chance by volleying in Mendy's cross, Real suddenly came back to life.
Worse was to come for City when emergency right-back John Stones hobbled off with a muscle injury that will further stretch City's squad as they chase a Champions League and Premier League double.
Guardiola had pulled a fast one by keeping the England defender away from the part of City's training session that was open to the media on Monday, only for Stones to appear once the cameras had left.
Fernandinho replaced the ex-Everton man, and stunned the Etihad Stadium with a superb run and cross to set up Foden to restore City's two-goal lead.
But it proved to be merely another flesh wound, as Vinicius Junior stormed away from Fernandinho to score a brilliant solo goal two minutes later.
Bernardo hit back once more, smashing in a fourth for City, only for a late Madrid free-kick to hit Aymeric Laporte on the arm as he attempted to head clear.
Benzema, who missed two penalties last time out against Osasuna, was the coolest man amid the madness, chipping a Panenka past Ederson to silence the stadium once more.
That proved to be the final act before the interval of what is already an unforgettable tie.
With the brilliance of Bernardo, Foden and De Bruyne, City have the quality to go to the Bernabeu and finally finish Madrid off.
But right now, the beast lives on. The final blow, if it is to come, will have to arrive in the Spanish capital.