In what was a pulsating, tense, action filled encounter befitting of these two European powerhouses, it was Real who had struck first, Rodrygo firing Carlo Ancelotti’s side into a 12th minute lead.
City though took the game to the 14-times European champions, seeing Erling Haaland hit the bar and carving out a plethora of chances.
Our pressure finally told 14 minutes from time when Kevin De Bruyne smashed home from close range after Antonio Rudiger had failed to clear substitute Jeremy Doku’s cross.
That sent the tie into the drama of extra time and with no more goals forthcoming it set up the tension of a penalty shoot out.
Though Luka Modric missed Real’s first spot kick, Bernardo Silva and Mateo Kovacic were both unsuccessful from the spot with Antonio Rudiger converting Real’s final penalty to seal victory for the visitors and send Carlo Ancelotti’s men into the semi-finals.
What happened
It was the third season in a row that these two titans of European football had locked horns in the knockout stages of the continent’s premier tournament.
And, if anything, the appetite was whetted all the more after respective last four aggregate wins for Real in 2022 and City last season.
An expectant and vociferous Etihad full house only added to the sense of occasion and expectation for a contest that would have graced the final at Wembley in six weeks’ time.
The game began at a breakneck pace with both sides seeking to gain the early ascendancy and it was Real who created the first opening, Eduardo Camavinga’s 11th minute shot from outside the box on target but meat and drink for Ederson.
But two minutes later Real probed again and this time their pressure did tell as Rodrygo fired the visitors ahead.
A lightning attack initiated by a stunning first-time touch from Jude Bellingham put in Vinicius Junior who arrowed in a cross from the right flank.
Ederson prevented Rodrygo’s initial close-range effort, but the Brazilian reacted instinctively to force home the rebound.
City sought an instant response with Erling Haaland rising to meet Bernardo’s teasing 17th minute cross but sending his effort just over the bar.
Two minutes later the Norwegian came even closer, his looping six-yard header cannoning back off the bar before Bernardo’s touch on the rebound then went just the wrong side of the target.
It was breathless, breathtaking stuff at both ends with a fine Josko Gvardiol block denying a 26th minute goalbound shot from Dani Carvajal after another lightning Real break prompted by Vinicius.
Real keeper Andriy Lunin then produced a fine save to parry away a stinging 20-yard Kevin De Bruyne drive as the temperature and intensity went up another notch.
With a raucous Etihad urging City on, De Bruyne tried his luck again from 25 yards but couldn’t keep the ball down.
Erling Haaland’s superb 37th minute touch then put Jack Grealish clear on the left edge of the box and it took a last-ditch intervention from Antonio Rudiger to deflect the City winger’s effort off target.
With a breathless first half almost up, Real keeper Lunin then back-pedalled desperately before clawing away a De Bruyne corner that looked to be curling into the top corner of the net.
City sought to come roaring out of the blocks at the start of the second half with a powerful 20-yard Grealish volley parried clear by Lunin.
A 50th minute surging run by Haaland then saw Nacho almost ruin the ball into the Real net before the Real skipper produced a frantic rearguard clearance off the line.
The City pressure was relentless with Lunin called into action to keep out a Foden shot.
With the tension almost unbearable Grealish then let fly with a 70th minute piledriver that Lunin initially spilled before gathering in the nick of time as Phil Foden prepared to pounce.
Pep Guardiola sought to summon up fresh impetus by bringing on Jeremy Doku for Grealish and the Belgian produced an instant impact as City drew deservedly level through De Bruyne on 77 minutes.
Doku proved the architect, pinging in a low cross which Rudiger could only direct straight to the waiting De Bruyne who lashed home from close range to finally end Real’s resistance.
Just four minutes later it looked like KDB would strike again as he was picked out by the impressive Akanji lurking free in the centre of the box only to fire a drive over the bar.
With extra time looming an injury time De Bruyne caused more panic in the Real box before his set piece was met by Haaland but bounced over the bar to send us into an extra half hour.
City may have been in the ascendant with Foden getting his feet in a tangle when he prepared to fire in on goal but the tension was still palpable with Real remaining a threat on the break.
And a minute before the end of the first period of extra time, hearts were in mouths when Rudiger stole in unmarked at the near post but could only volley wide from six yards out.
Guardiola summoned fresh blood with time running out bringing on Mateo Kovacic and John Stones and the Croatian so nearly made an instant impact only for Rudiger to make a crucial block as Kovacic prepared to press the trigger.
But after 120 minutes the sides could not be separated which led to the drama and tension of penalties.
Though Modric saw Real’s opening penalty saved by Ederson, both Bernardo and Mateo Kovacic also saw their spot kicks kept out.
With the score tied at 3-3 it all came down to Rudiger’s final spot kick and the defender converted to book Real’s ticket into the last four.
Teams
CITY XI: Ederson, Walker (C), Akanji (Stones 111), Dias, Gvardiol, Rodrigo, De Bruyne (Kovacic 111), Bernardo, Foden, Grealish (Doku 72), Haaland (Alvarez 90)
Subs: Ortega Moreno, Carson, Ake, Gomez, Nunes, Bobb, Lewis
REAL MADRID XI: Lunin, Carvajal (Militao 111), Rudiger, Nacho (C), F. Mendy, Valverde, Camavinga, Kroos (Modric 79), Rodrygo (Brahim 84), Bellingham, Vinicius Jr (Lucas V 101)
Subs: Kepa, Fran, Modric, Joselu, Ceballos, Fran Garcia, Arda Guler
Star man
Once again Kevin De Bruyne was at the heart of so much that was good about City.
His vision, awareness and sheer will to win were then crowned by that vital late second half strike, the Belgian firing home just when some were beginning to fear if it wouldn’t be our night.
His threat from set pieces was also a constant source of danger for Real from the get-go.
A word too for the heroics of Kyle Walker. Summoned straight back into action after almost a month out, the City skipper was quite superb not least in largely nullifying the threat of Real dangerman Vinicius Junior.
A penalty shoot out defeat was harsh indeed for their sterling efforts.
Stat zone
This latest meeting with Real was marked our 200th game in European combat.
Sadly it saw our unbeaten run in the Champions League finally breached after 22 games and marked our first home loss in Europe in 30 games.
What it means
Defending European champions City’s quest for a second Champions League crown must wait for another year.
Instead it is Real who will now await a semi-final encounter with Bayern Munich, who overcame Arsenal 3-2 on aggregate.
Pep’s reaction
“I have to say thank you to these players from deep in my heart because the way they played. But football is about winning and we didn’t do enough yet we were exceptional.
“Sometimes you can win on penalties and sometimes you cannot. But in the game we did not convert the chances that we had, even though we defended really.
“Everyone performed at a high level. We said we would have to be at our best to play Real Madrid and they were.”
RUBEN DIAS reaction
“I don’t know what to say. Frustrating. We dominated the whole game. You go to penalties. The effort was there. We had chances. It’s a difficult one to take.
“You always end up doing everything to try to avoid penalties. That’s what they wanted.
“The team was there. We fought, we had our chances but it wasn’t our day.
“We had the chances. Sometimes the ball goes in, sometimes it doesn’t. Now we have to look forward at what’s to come in the season.
“We won’t have much time to rest. It’s a busy part of the season. Now is a time to be strong especially in the head. We’re still in two important competitions.”
What’s next
City now refocus for another huge game – Saturday’s FA Cup semi-final against Chelsea.
Kick-off for the Wembley encounter is slated for 17.15pm (UK).
News about Man City v Real Madrid
Pitcam highlights: City 1-1 Real Madrid (Real win 4-3 on pens)
Watch our intense Champions League second leg clash with Real Madrid from a unique angle. Watch more
Every City player should be proud - Morrison
Former City defender Andy Morrison says every player should be proud of their performance after our Champions League exit against Real Madrid. Read more
Highlights: City 1-1 Real Madrid (Real win 4-3 on pens)
Watch the best of the action from City’s dramatic Champions League quarter-final second leg clash with Real Madrid. Watch more
Full-match replay: City v Real Madrid
Watch all of the action from City's Champions League quarter-final second leg with Real Madrid at the Etihad Stadium. Watch more
Pep: Now the key is to rest and recuperate ahead of FA Cup semi-final
Pep Guardiola said City would seek to rest, recuperate and then regroup for Saturday’s FA Cup semi-final against Chelsea in the wake of Wednesday’s Champions League quarter-final exit to Real Madrid. Watch more
We did everything, says Pep after Champions League exit
Pep Guardiola said his players were exceptional and has no regrets after City were knocked out of the Champions League by Real Madrid. Read more