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 ahead of 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.
City boss Pep Guardiola made nine changes to the side that beat Paris St-Germain here on Tuesday, while his Chelsea counterpart Thomas Tuchel made five – and the result was a disjointed performance from both sides.