Sergio Aguero made a mess of a Panenka penalty as Chelsea ensured Manchester City must wait a little longer to wrap up the Premier League title by fighting back to earn a dramatic win at Etihad Stadium.
City, needing three points to become champions of England for the seventh time, took the lead just before half-time through Raheem Sterling’s close-range strike.
Aguero had a glorious chance to make it 2-0 from the spot moments later when Billy Gilmour fouled Gabriel Jesus, but the Argentina striker opted for a dinked effort that was easily saved by Edouard Mendy.
It proved a costly miss, as Chelsea improved after the break and equalised when Cesar Azpilicueta set up Hakim Ziyech to fire home from the edge of the area.
The visitors had two more efforts ruled out for offside before Marcus Alonso won it for them in injury time, meeting Timo Werner’s pull-back and sending the ball looping over Ederson.
This was Chelsea’s second win over City in the space of three weeks, following their victory in the FA Cup semi-final at Wembley in April.
The two sides will meet again in the Champions League final in Istanbul at the end of this month.
This result can only give Chelsea extra confidence for that game, as well as providing a big boost to their hopes of a top-four finish, but in truth this encounter offered few clues to how their next meeting will be decided.
Both managers made numerous changes to the sides they put out for their respective Champions League semi-final second-leg matches in midweek – City boss Pep Guardiola made nine to the side that beat Paris St-Germain here on Tuesday, while his Chelsea counterpart Thomas Tuchel made five to the team that defeated Real Madrid on Wednesday – and the result was a disjointed performance from both sides.