Manchester City will take a slender Champions League semi-final advantage to the Bernabeu after winning a seven-goal first-leg classic against Real Madrid at Etihad Stadium.

City delivered a magnificent display as they peppered Real’s goal for long periods but Carlo Ancelotti’s side kept rising off the canvas to somehow keep themselves in serious contention to reach another final.

Kevin de Bruyne set the tone for a magical night of football with a diving header from Riyad Mahrez’s cross in the second minute and in-form Gabriel Jesus quickly added a second from close range as Real reeled under wave after wave of attacks.

Mahrez enraged manager Pep Guardiola when he hit the side-netting instead of finding the unmarked Phil Foden, who shot inches wide before Karim Benzema, inevitably, gave Real a lifeline by sweeping home Ferland Mendy’s cross after 33 minutes.

The Spanish side escaped again shortly after the break when Mahrez struck the post but City restored their two-goal advantage when an unmarked Foden headed home Fernandinho’s cross in the 53rd minute.

City were pegged back again when Vinicius Junior dummied past Fernandinho and ran from inside his own half to score a superb second for Real.

However, a brilliant use of advantage from referee Istvan Kovacs allowed Bernardo Silva to fire into the top-left corner for City’s fourth.

There was still no let-up and Benzema capped a spectacular game by showing nerves of steel to chip a Panenka penalty past Ederson with eight minutes left following Aymeric Laporte’s handball.