Manchester City have a slender lead to defend in the second leg of their Champions League semi-final against Real Madrid after winning a thrilling first leg 4-3 at the Etihad on Tuesday.
The English champions could live to regret not killing off the 13-time winners after taking a two-goal lead three times.
Kevin De Bruyne, Gabriel Jesus, Phil Foden and Bernardo Silva were on target for Pep Guardiola's men, who should have scored many more.
But Karim Benzema's double and a brilliant individual effort from Vinicius Junior gave Madrid hope of another famous Champions League fightback at the Santiago Bernabeu on May 4.
Guardiola lamented letting Liverpool escape "alive" in the Premier League title race after a 2-2 draw at the Etihad nine days ago and will have similar regrets after a blistering opening that could have seen City go 4-0 up inside half an hour.
Madrid were playing in their 30th semi-final to City's third, but the English giants lived up to their tag as pre-tie favourites early on.
Only 92 seconds had passed before the Madrid rearguard was breached by Riyad Mahrez's quick feet and perfect cross for De Bruyne to stoop and head past Thibaut Courtois.
Guardiola has often been criticised for overthinking his team selection at the business end of the Champions League.
But his decision to break from the mould of the past two seasons and play Jesus as a central striker was inspired as the Brazilian ran the Real defence ragged.
Jesus pounced to make it 2-0 after just 10 minutes after David Alaba failed to deal with De Bruyne's cross.
The Spanish champions-elect were without Casemiro and his absence showed as City cut through midfield on the counter-attack at will.
Guardiola was furious with Mahrez after he selfishly smashed into the side-netting with Foden awaiting the cross for a tap in.
Moments later it was Foden who was guilty of wasting a glorious chance when he dragged wide another pinpoint De Bruyne through ball.
Benzema dragged Madrid back from the dead to see off Paris Saint-Germain and Chelsea in the previous two rounds and again rose to his side's rescue before half-time.
The Frenchman cushioned in his 40th goal of the season off the post from Ferland Mendy's cross.
Yet, Madrid's good work in steadying the ship towards the end of the first half was undone in another slow start after the break.
Mahrez hit the post when one-on-one with Courtois before Dani Carvajal blocked Foden's follow-up on the line.
Fernandinho was forced to deputise at right-back after replacing the injured John Stones in the first half.
And the City captain had a major role to play in two goals in two minutes at either end.
Firstly, he picked out Foden to restore City's two-goal lead.
But the 36-year-old showed his age as Vinicius sprinted clear of his Brazilian compatriot from the halfway line before slotting past Ederson.
City continued to create chances at an alarming rate for Carlo Ancelotti but it took something special when they did finally get a fourth.
Oleksandr Zinchenko was fouled on the edge of the area, but Romanian referee Istvan Kovacs played advantage and Silva thrashed into the top corner.
Again City failed to put the tie to bed as Mahrez was inches away from finding the far corner from the narrowest of angles.
But there was a final twist eight minutes from time when Aymeric Laporte handled inside the area.
Benzema was the coolest man in the stadium as he chipped the spot-kick down the middle to leave the tie on a knife-edge headed back to the Spanish capital.
Check out latest DH videos here