Manchester City will take a slender lead to the Bernabeu after a thrilling 4-3 win over Real Madrid in their Champions League semi-final first-leg.

City led the tie after 94 seconds when Kevin De Bruyne scored with a diving header before Gabriel Jesus put them two-up inside 11 minutes.

Karim Benzema, on his 600th appearance for Real Madrid, pulled one back with a superb volley but Phil Foden headed in City’s third shortly after half-time.

Real hit back within two minutes through Vinicius Junior’s wonderful solo goal although Bernardo Silva restored City’s two-goal advantage until Benzema coolly chipped a late penalty down the middle to cap a classic Champions League tie after Aymeric Laporte had handled the ball.

City led within two minutes when Riyad Mahrez was afforded too much space and time to cut inside from the right and drift in a cross for De Bruyne to steer past Courtois with a diving header.

Real were passive in their defending during the opening 20 minutes, summed up when De Bruyne was allowed to measure a ball into Jesus from the left, which David Alaba failed to clear, and the striker was handed a simple finish for City’s second.

Pep Guardiola made four changes to his team that beat Watford 5-1 in the Premier League on Sunday.

John Stones suffered a knock in City’s victory over Brighton last Wednesday, but was fine to come back into the team at right-back. Regular right-back Kyle Walker missed the last three games and was unavailable again while defender Joao Cancelo was suspended for the tie.

Jack Grealish, City’s £100 million man, was dropped to the bench with Phil Foden coming in. Raheem Sterling also missed out and was replaced by Riyad Mahrez. Fernandino was benched with Bernardo Silva chosen ahead of him.

Carlo Ancelotti was able to rest some of his big hitters during their last match, a 3-1 win at Osasuna on Wednesday.

Luka Modric and Vinicius Junior both came back into the starting line-up against City along with Toni Kroos.

Daniel Carvajal and Ferland Mendy, who hadn’t played since suffering an injury in the quarter-final first-leg against Chelsea, were re-introduced at right-back and left-back respectively as Lucas Vazquez and Nacho were benched.

Eduardo Camavinga, Dani Ceballos and Marco Asensio also made way. Casemiro was only able to make the bench due to injury.

The visitors had sizzled with a fine display at Chelsea in their quarter-final first leg but never reached those heights at the Etihad. Carlo Ancelotti’s side should have been three behind after 25 minutes when Mahrez crashed an effort into the side-netting on a City breakaway before Foden then dragged a chance wide on another counter-attack.

Benzema had been starved of service during the opening 30 minutes, deciding to turn provider by delivering a cross for Alaba which the centre-back headed narrowly wide. But the Real Madrid talisman only needed half a chance to grab his 13th Champions League goal of the season. The 34-year-old superbly volleyed Mendy’s cross in off a post with his left foot to get the visitors back into the game.

City had been in control but were soon on the back foot with Ederson having to save from Rodrygo before John Stones was forced off with an injury and replaced by Fernandinho at right-back.

Alaba was replaced by Nacho at half-time but Real’s defensive woes continued. Eder Militao missed his clearance as last man which allowed Mahrez through on goal. His shot hit a post with Foden’s close-range follow-up crucially cleared off the line by Daniel Carvajal.