After a goalless first half, the hosts capitalised on a defensive mix-up between Rodri and Nicolas Otamendi to take the lead as the impressive Vinicius Junior raced towards goal before neatly squaring for Isco to slot home.
But Gabriel Jesus and Kevin de Bruyne scored late goals as Manchester City fought back from a goal down to beat Real Madrid.
Sergio Ramos shot over as Real Madrid looked to double their advantage but City equalised 12 minutes before time when Jesus nodded in from close range.
According to BBC, it was the least City deserved for what had been an impressive away performance by Pep Guardiola’s side and things got even better seven minutes from time when substitute Raheem Sterling was brought down inside the box and De Bruyne stepped home to confidently convert from the spot.
It got even worse for Real Madrid when they were reduced to 10 men with five minutes remaining. Sergio Ramos brought down Jesus as he ran through on goal and the defender was shown a red card.
It was the first time City had beaten Real Madrid in the Champions League and means they are in the driving seat before the second leg at the Etihad next month.