Cole Palmer scored deep in added time to secure Chelsea a point
In a game of the highest quality in treacherous conditions, fortunes swung both ways.
City thought they had the three points when Rodri's shot from the edge of the area touched off Thiago Silva past Chelsea keeper Robert Sanchez with four minutes left.
Chelsea, showing superb resilience, were not to be denied and Palmer - a £40m summer signing from Pep Guardiola's side - stayed cool amid the mayhem to beat Ederson from the spot to leave City just a point clear of Liverpool at the Premier League summit.
The reigning champions led in contentious fashion after 25 minutes when they were awarded a penalty for Marc Cucurella's pull on Erling Haaland, despite Chelsea's protests that the full-back had been fouled first.
Haaland dispatched the penalty with ease, but the hosts were level four minutes later when Brazil centre-back Silva glanced home Conor Gallagher's corner at the near post.
Chelsea turned the game around when Raheem Sterling also scored against his former club after 37 minutes, turning in Reece James' cross after Josko Gvardiol's mistake.
City, though, levelled on the stroke of half-time when the unmarked Manuel Akanji headed in Bernardo Silva's cross.
Two minutes after the break City went in front again when Haaland scrambled in Julian Alvarez's cross at the far post.
Yet Chelsea again battled back and deservedly drew level in the 67th minute when Nicolas Jackson pounced after Ederson pushed out Gallagher's low drive.
Guardiola's side thought they had won it with Rodri's stroke of good fortune - until the late penalty drama capped an entertaining, eventful encounter.
Defender Ruben Dias was penalised for a foul on Chelsea substitute Armando Broja and Palmer's calm finish left honours even.
-- Courtesy of BBC Sport