The Blues went down to a first-half own goal from Fernando but rarely threatened to find the precious away goal that sees Real Madrid triumph 1-0 on aggregate.
It will now be a Madrid derby at the San Siro later this month while City are left to muse what might have been and hope that there will be many more big night in this competition ahead in the years to come.
There would be few who argue that the Santiago Bernabeu is an impressive sight on evenings such as this.
Full to the brim and a sea of colour and cacophony of noise, any team coming into the bear pit need to be fully focused, committed and have a game plan – or else play the consequences.
Real Madrid score a lot of goals on their own turf and concede few so City had to restrict the hosts to as few clear-cut opportunities as possible.
The Blues suffered a major blow as early as the ninth minute when Vincent Kompany’s injury jinx struck yet again as he burst over the halfway line before falling to the floor as he attempted a pass.
The skipper’s crestfallen expression as he left the pitch said everything with the Belgian’s curtailed campaign seemingly now over.
The Blues almost saw out the first 20 minutes without any major concerns – almost – but a momentary lapse in concentration allowed Gareth Bale too much space on the right and the former Spurs winger’s cross deflected over Hart off Fernando’s boot and in via the post to give Real the lead.
City were just lacking a bit of spark and belief in the final third as Jesus Navas demonstrated when he got in behind the Madrid defence only to fire a low cross straight into his namesake Keylor Navas’ arms.
Pepe had a goal rightly disallowed for offside ten minutes before the break as the hosts looked to establish a lead that would make a City comeback very unlikely, but right on half-time, the Blues finally clicked into gear.
Kevin De Bruyne received the ball in space in the Madrid half and quickly fed Fernandinho who nudged the ball to the right before striking a low shot that kissed the outside of the post.
It was a reminder that one goal was all that was needed and that City were still very much in the game.
Madrid came out looking to kill the game off after the re-start and twice in the opening ten minutes they close to doubling their lead, first as Luka Modric found himself with just Hart to beat, only to be denied by the England keeper, and then Cristiano Ronaldo’s header was well held by Hart moments later.
Manuel Pellegrini decided more zip and speed was needed up front with the home keeper untroubled by the hour-mark so Yaya Toure was replaced with Raheem Sterling.
Again City were fortunate not to concede on 64 minutes when Bale’s header smacked the bar.
Kelechi Iheanacho was brought on for the final 20 minutes as City looked for one final big push in game that was still within the Blues’ grasp.
With a minute of normal time to go, Aguero picked up the ball 20 yards from goal and whipped a dipping drive just a foot over the bar – it was the closest City had come to an equaliser but with so little time remaining it didn’t spark the late charge that was needed.
Ultimately, time finally ran out on the Blues’ epic adventure and though there is much to be proud of for reaching this stage, there was a feeling that with perhaps a little more caution to the wind, the outcome might have been different.
Real Madrid CF (1): K Navas, Carvajal, Pepe, Ramos, Marcelo, Kroos, Modric (Kovacic 87), Bale, Isco (James 67), Jese (Vazquez 56), Ronaldo Manchester City (0): Hart, Sagna, Kompany (Mangala 10), Otamendi, Clichy, Fernando, Fernandinho, Toure (Sterling 61), Navas (Iheanacho 69), De Bruyne, Aguero