Earlier, Erling Haaland had scored to twice give City the lead, first from the penalty spot before Chelsea turned the game on its head with goals from Silva and Raheem Sterling.
Manuel Akanji headed an equaliser on the stroke of half-time before Haaland’s second made it 3-2 minutes after the restart, but still Chelsea were not done, hitting back to make it 3-3 through Nicolas Jackson.
Then came what looked the winner from Rodri, before Palmer’s late, late intervention served to hurt the side he left for west London in September.
It had all begun with a controversial penalty award for City after 21 minutes. Marc Cucurella and Haaland appeared to be engaged in an even tussle as the ball was floated in to the six-yard box but, as the pair went to ground, the defender was penalised for having hauled Haaland down.
VAR checked and found no reason to overturn referee Anthony Taylor’s decision, and after a lengthy delay Haaland kept his cool to beat Robert Sanchez from the spot.
Chelsea had made the brighter start and now they sought an instant reply. Reece James forced Ederson into an athletic fingertip save from a well-struck free-kick just outside the box.
It was to be a momentary reprieve. From the resulting corner swung in by the right foot of Conor Gallagher, Silva slipped his man and with a glancing header that zipped across the face of the goal and in he drew his side level.
City almost hit back instantly through Haaland, but Phil Foden’s cross was fractionally too deep and the striker could only turn it into the side netting. Minutes later, Foden tried to do it himself with a wicked drive with his left foot that bent inches past a post.