Manchester City came from behind to beat Real Madrid 2–1 in the Champions League league phase, replying to Rodrygo’s opener with goals from Nico O’Reilly and Erling Haaland before the interval, then managing the game with control during a tense second half.
Madrid struck first on 28 minutes. Álvaro Carreras won the ball on the left and Jude Bellingham threaded a pass through for Rodrygo, who set himself and drove a low finish across the goalkeeper into the far corner.
City were level inside ten minutes. A deep corner was headed back across the six-yard box and O’Reilly reacted first to steer the ball over the line from close range, his first European goal. By halftime, the visitors were in front. Antonio Rüdiger was caught on the wrong side of Haaland and pulled the striker down. The penalty stood after a brief check, and Haaland waited for the goalkeeper to commit before rolling his shot the other way for 2–1.
The second half became a contest of tempo. City slowed the game, using Phil Foden’s switches to Jeremy Doku as the release on the left and keeping Madrid at arm’s length. The hosts still forced the late drama the stadium demanded. Vinícius Júnior headed wide at the back post with the goal in view and then miscued from close range after a scramble. The loudest roar came when Endrick climbed at the far post and crashed a header off the crossbar. Guardiola’s side finished with a compact block and saw the match out with few alarms.
The themes were familiar. Madrid’s set-piece vulnerability reappeared at a critical moment and the concession of a penalty compounded it. City were opportunistic when the game was open, then pragmatic once it swung their way. Thibaut Courtois kept the margin narrow with several saves, while Valverde’s stint at right back gave Madrid reliability on that flank. For City, the match turned on Haaland’s penalty and the collective calm that followed.