Manchester City's hold on the Champions League was wrestled away by Real Madrid as they were beaten on penalties in a dramatic quarter-final at Etihad Stadium.
The holders recovered from going behind to Rodrygo's early strike to lay siege to Real's goal, finally equalising 14 minutes from the end of normal time when Kevin de Bruyne pounced on Antonio Rudiger's clearance.
It was the least City deserved for their almost total domination but a lack of the finishing touch cost them as Real, despite being exhausted and mounting a desperate rearguard action, held out for spot-kicks.
City looked on course to meet Bayern Munich in the semi-final when Luka Modric missed Real's first penalty but Bernardo Silva's dreadful effort and another from substitute Mateo Kovacic were saved by keeper Andriy Lunin, leaving former Chelsea defender Rudiger to step up and clinch victory for the great Champions League specialists.
It ended City's bid for another Treble of Champions League, Premier League and FA Cup - and they must now recover from this gruelling encounter to defend the latter in the semi-final against Chelsea at Wembley on Saturday.
City will wonder for a long time how they failed to win this game despite exerting complete superiority over their Spanish opponents apart from the early stages when the La Liga leaders struck through Rodrygo.
The answer is simple - Pep Guardiola's side piled up the opportunities but could not take them, letting Real off the hook.
City had 33 shots to Real's eight, 18 corners to one but they just could not put Carlo Ancelotti's men away.
And there was always a danger that Real, who have been the great escapologists against City in this competition before, would find a way to get the job done.
So it proved, with the key moment coming when Silva chose to loft an awful penalty straight into the hands of Lunin, shifting the emphasis of the shootout back in Real's favour after Modric's first miss.
The home fans rose to their side amid their despair, the Champions League won against Inter Milan in Istanbul last season lost in the most painful of circumstances.
Focus will switch to trying to win the domestic double of the Premier League and FA Cup. This was a top-class display from City simply missing the second goal they deserved.
It was another tough night for Erling Haaland, who hit the bar with a header early on but was kept at arm's length by Real, eventually being substituted for Julian Alvarez at the start of extra time.
Guardiola must now lift and re-energise City before that Wembley meeting with Chelsea on Saturday evening.
Lunin the hero for Real
Real goalkeeper Lunin has stepped into the breach impressively with the world-class Thibaut Courtois sidelined by injury, making amends for an error for Silva's goal in the Bernabeu with a superb display here.
The Ukraine international, 23, did everything required as Real somehow stood firm in the face of a sustained City assault in the second half to keep manager Ancelotti on course for a fifth win in this competition.
Real were, literally in many cases, run to a standstill by the end of extra time but they are the great Champions League survivors and will once again believe they are destined to win the trophy having disposed of City.
And for England's Jude Bellingham, it was another stage in his learning experience at this elite level, which can only benefit him for the rest of this season with Real and then for his country at Euro 2024.
Like the rest of his team-mates, Bellingham was made to suffer by City's intensity but he still made two vital contributions.
The 20-year-old showed magnificent control in the build-up to Rodrygo's goal and then stepped forward with confidence in the shootout to silence the jeers of the Etihad with a calmly converted penalty.
This was not Bellingham's best night - but he still played his part.
Source: BBC
BDST: 1204 HRS, APR 18, 2024
SMS