Question marks were raised over Pep Guardiola's team selection at the Bernabéu with David Silva, Sergio Agüero and Raheem Sterling starting on the bench but City delivered in style.
A come-from-behind win after a tense but fascinating goalless first half gives City two away goals and a massive advantage heading into the second leg in three weeks time.
How did we rate the players?
⚪️ Real Madrid
🇧🇪 Thibaut Courtois 7
Could do nothing about the goals and was solid throughout, denying Jesus in the first half and distributing the ball smartly.
🇪🇸 Dani Carvajal 3
Sparked into life after the 70th-minute, getting forward well, but had a horror show final 15 as he allowed De Bruyne to cross for City's equalizer and then pulled Sterling down to concede the penalty that De Bruyne concerted.
🇫🇷 Raphaël Varane 7
Rock-solid display from the World Cup winner.
🇪🇸 Sergio Ramos 2.5
Never looked comfortable. An iffy clearance early on almost cost Madrid on the line and was bullied aerially by Jesus for City's equalizer. On a night when he made a Champions League appearances record, instead, it will be remembered for his cynical foul on Jesus that resulted in his 26th red card in Madrid colours. Misses the second leg.
🇫🇷 Ferland Mendy 7
One of Madrid's outstanding players.
🇧🇷 Casemiro 5
His sloppy back pass led to Ramos' dismissal.
🇺🇾 Federico Valverde 5.5
An up and down game for the talented Uruguayan. Quiet for the most part, came into his own for a brief spell in the second half and then faded away again. Lost his battle with Rodri.
🇭🇷 Luka Modrić 6
Composed on the ball but couldn't quite affect the contest like he would want to have done.
🇪🇸 Isco 6.5
Quiet all game until the goal.
🇧🇷 Vinicius Jr. 6.5
An impressive outing for the teenage Brazilian, who assisted Isco's goal, but fell over with the goal gaping early in the contest after a Benzema header. His pace was a problem for City's fullbacks though.
🇫🇷 Karim Benzema 5
Superb header early on but couldn't get into the game and lacked service.
🌃 Man City
🇧🇷 Ederson 7.5
Brilliant distribution and calmness throughout, and made a brilliant save to deny Benzema in the first half.
🏴 Kyle Walker 7
Got the better of Vinicius throughout the contest.
🇦🇷 Nicolás Otamendi 5
Sold Rodri short with a poor pass that led to Real Madrid's goal. Not his best game.
🇫🇷 Aymeric Laporte 5
Composed on the ball until he had to come off with yet another injury after 33 minutes.
🇫🇷 Benjamin Mendy 6
Poor going forward but good defensively, which is basically the reverse of what you expect from the Frenchman.
🇪🇸 Rodri 7
Composed and tidy alongside Gundogan, keeping the ball ticking and snuffing out danger.
🇩🇪 Ilkay Gündogan 8.5
Imperious display from the midfield maestro who recycled the ball quickly and dealt with Madrid's high press well.
🇵🇹 Bernardo Silva 5
Wasn't able to affect the game in a new role.
🇩🇿 Riyad Mahrez 6
Poor final product from Mahrez all night but he did cause Madrid all sorts of problems with his powerful running.
🇧🇪 Kevin de Bruyne 8.5
Operated in an unfamiliar false 9 role and initially, he struggled, but he shone when City turned the ball over and countered. City's skipper turned the game around in the second half when he dropped a little deeper to orchestrate things, assisting Jesus' opener and then coolly slotting his first-ever regulation time penalty for the club.
🇧🇷 Gabriel Jesus 9
Probably his best performance in a City shirt, and it came out of position. Jesus hounded Carvajal and Isco all night on Madrid's right, shutting down the home side's attacks and springing his side into dangerous transition opportunities. There are not many strikers on the planet that work as hard as the 22-year-old does off the ball, and he was rewarded for his efforts by beating Ramos in the air to equalize for City and then got the better of Ramos again, forcing the Madrid skipper to haul Jesus down and earn his 26th Real Madrid red card.
🇧🇷 Fernandinho 8
Immense after coming on, making countless blocks and building the platform for City's fightback.
🏴 Raheem Sterling 6.5
Lively cameo in which he won the penalty that proved to be the winner.
What a night in Madrid. City's win made them just the second side to beat Real Madrid away from home in the Champions League despite conceding the first goal, after Milan in October 2009.