It would be difficult to find two teams in better form since the restart, after the coronavirus pandemic halted the season. But some 164 days after the first leg at the Santiago Bernabeu, the teams finally faced each other again with a place in the quarter-finals up for grabs.
Pep Guardiola made a surprise decision to hand a start to Phil Foden in the front three, while David Silva began on the bench in what could be his final chance to appear in a blue shirt.
Eden Hazard brushed off concerns over his fitness to return to the Real Madrid starting line-up, while Zinedine Zidane was forced to deploy Eder Militao at centre-back in place of suspended captain Sergio Ramos.
Guardiola's tactical shift was evident from the first minute, with Foden pressing through the middle and Gabriel Jesus out wide. For the first five minutes, it was a game of cat and mouse: Real passing around at the back, City scurrying about furiously.
But the effort paid off not long after. Thibaut Courtois' pass put Raphael Varane in a compromising position and he was robbed by Jesus, who squared to Raheem Sterling to tap home his 31st goal of the season.
City wanted the tie done and dusted and nearly added a second with Foden and Ilkay Gundogan seeing their efforts charged down.
Sterling was the main protagonist in leading City's attacks and twice went close to adding to his tally, first striking over and then weaving past two defenders before a last-ditch challenge from Casemiro.
But Real settled in the game after a difficult opening 20 minutes and Ederson was forced into action to deny Karim Benzema and then Eden Hazard from range.
The visitors clawed their way back into the reckoning with a sublime team goal from the right. Benzema passed into Rodrygo, who knocked it past Joao Cancelo and crossed for the Frenchman to head home into the corner.
City found themselves with a chance to restore the error following an error from Courtois, but Foden dragged his shot just wide of the post.
After an absorbing first half of chances at both ends, City stepped up a gear in search of that elusive second goal. Shortly after the restart, it was Sterling again who had ghosted in behind Dani Carvajal but Courtois made an important stop.
Real's problems at the back were evident from the start and Varane was guilty of another error to give City the lead again. Rodri's long ball over the top gave the French defender a torrid time and his header was pounced on by Jesus, who lifted it over Courtois.
Real sent on Marco Asensio and Luka Jovic in an attempt to grab one back but they needed two goals to go through and the task was too steep. City had passed their own test of character and the quarter-finals in Lisbon beckon, with European glory very much in sight.
Can't see the blog? Click here for the desktop version.