Manchester City recovered from a goal down to collect a magnificent Champions League victory at perennial winners Real Madrid and leave the La Liga side’s manager Xabi Alonso precariously holding on to his job.
Alonso is under severe pressure following a poor run in the league and a reported clash of culture with his players and the heat will now crank up after failing to hold on to their early advantage.
The hosts suffered a blow as leading goalscorer Kylian Mbappe was deemed only fit enough to be on the bench, but the France captain did not make an appearance as his team-mates fell to a demoralising defeat.
City almost suffered a nightmare start when Matheus Nunes tripped Vinicius Jr inside the first two minutes and the referee pointed to the spot, but then awarded a free-kick on the edge of the box after consultation with the video assistant referee (VAR).
Federico Valverde almost converted the resulting effort, but his drilled shot deflected narrowly wide, while the sprightly Vinicius dinked wide at the far post shortly after.
It seemed like City had weathered the early storm and were controlling the possession before being hit on the break as Rodrygo collected Jude Bellingham’s cross-field pass and rifled in his first goal since January.
City, though, were behind for just seven minutes as the visitors scored with their first clear opportunity of the contest – academy left-back Nico O’Reilly poking home from close range after Josko Gvardiol’s header was scooped back into the danger zone by Thibaut Courtois.
The English side turned the game around on the stroke of half-time courtesy of Haaland’s penalty after the striker was bundled over in the box by Antonio Rudiger – they could have extended their advantage further but Courtois made a stunning save to deny the Norwegian.
Real attempted to draw level in the second half with Bellingham chipping over and substitute Endrick flicking a header which clipped the crossbar, but City held on to a tremendous victory.

Manchester City analysis: Guardiola’s men keep cool in cauldron
Real and City have become familiar foes in the Champions League, defining this particular era of the competition by facing each other for the 15th time and the fifth consecutive campaign.
City faced a hostile Real crowd which made their feelings known before kick-off, jeering and whistling ex-Barcelona boss Pep Guardiola’s name when it was read out by the stadium announcer.
But the Spaniard and his side will be highly satisfied in gaining a measure of revenge following their play-off stage defeat here in February, with Guardiola now losing only seven of his 28 meetings against his fierce foe.
City started nervously in the Spanish capital and went behind but showed excellent character in the cauldron of the Bernabeu to recover, keep their cool and see out the contest.
Academy product O’Reilly never seems to put a foot wrong and scored a dream equaliser to drag his side back into the contest on 35 minutes, while defensively he won three tackles and contributed four important clearances.
The ever-reliable Haaland made no mistake with his penalty to score his 55th Champions League goal, with no player managing more since his debut in the competition for RB Salzburg in 2019.
Jeremy Doku could have made it a more comfortable scoreline but saw his low shot pushed wide by Courtois at full stretch, and ultimately it did not matter.
City recovered from their shock defeat by Bayer Leverkusen last time out and climb to fourth, while they will be confident of claiming an all-important top-eight place with matches to come against Bodo/Glimt and Galatasaray.
Real Madrid analysis: Guardiola gets one over on protege
Is this the end of Alonso’s six-month reign?
BBC Sport’s Guillem Balague said before the game that the Spaniard’s chances of holding on to his job were “slim” – he is now surely holding on to his position by his fingertips.
A board meeting, which took place after Sunday’s loss against Celta Vigo, is never a good sign and they could reconvene again quickly to make a decision.
This was the first managerial meeting of Alonso and Guardiola after working together as player and boss at Bayern Munich, but one that could prove consequential.
Real failed to build on their lead and succumbed once City took control of the contest, with the result dropping them to seventh in the table.
