Chelsea had substitute Conor Gallagher to thank for their low quality comeback win over Crystal Palace – his first ever goal for the club that he refused to celebrate against a team that did so much for him during an incredibly successful loan last season.
Odsonne Edouard had given Palace an early lead that they deserved on balance, before Pierre-Emerick Aubameyang cancelled that out with a goal on his first Premier League game since returning to English football from Barcelona last month.
Palace were well drilled in their shape, with Eberechi Eze and Michael Olise both disciplined in midfield out of possession but then pouring forward when the Eagles got the ball. Chelsea, meanwhile, had far more of the ball but looked a little unsure of themselves.
Raheem Sterling did go close, however, hitting the outside of the post from a Reece James cross.
The home crowd were baying for a red card half an hour when Thiago Silva was caught out and swiped the ball away from Jordan Ayew with his hand while sprawled on the floor to stop the Palace man racing through on goal. He was yellow carded but VAR decided not to upgrade it.
The sickener for Palace was Silva’s involvement in the equaliser soon afterwards. The centre-back jumped highest to nod a searching diagonal ball into the path of Aubameyang, who was not far removed from fluffing a glorious earlier chance, to finish first time on the turn.
Chelsea could have gone ahead in unusual circumstances in first half stoppage time with a seldom seen indirect free-kick inside the Palace area after an illegal back-pass. But Mason Mount’s shot rippled the outside of the net, rather than the inside.
The visitors from west London were undeniably on top in the second half, although real clear chances were few and far between as both teams appeared to lack end product.
On the hour mark, a combination of Cheick Doucoure and Joel Ward blocked really well against Kai Havertz from close range. Meanwhile, Ben Chilwell probably should have done better with an attempt that he blazed over the bar.
Chelsea were nearly made to rue not making that dominance when stand-in goalkeeper Kepa had to be alert to parry from Wilfried Zaha, who had been largely quiet until that moment.
In the end it had to be Gallagher. Fellow substitute Christian Pulisic played a major role in the winning goal, driving in from the left flank, with Gallagher then unleashing a superb curling effort into the far corner in the last of the full 90.
Crystal Palace vs Chelsea - player ratings
1. Crystal Palace (4-3-3)
GK: Vicente Guaita - 5/10 - Looked a little shaky at times but stood little chance with either Chelsea goal.
RB: Nathaniel Clyne - 5/10 - His 400th club appearance sadly ended in the fist half when he was stretchered off in some distress.
CB: Joel Ward (c) - 6/10 - Not his natural position but filled in admirably again.
CB: Marc Guehi - 6/10 - Played on through the pain in the second half. Did okay against his old club overall.
LB: Tyrick Mitchell - 6/10 - Got away with a few lapses.
CM: Michael Olise - 8/10 - Carried the ball well in a performance that needed to be disciplined to both sides of the game.
CM: Cheick Doucoure - 7/10 - Held things together in the middle of the pitch and also made a crucial penalty area block in the second half.
CM: Eberechi Eze - 7/10 - Passed well and won the ball back in central areas. His shooting was ambitious and pretty wayward.
RW: Jordan Ayew - 7/10 - A clear threat from the start and registered an assist with a splendid early cross.
ST: Odsonne Edouard - 7/10 - Took the early goal well. Not massively involved overall, but made sure Chelsea had to keep an eye on him.
LW: Wilfried Zaha - 6/10 - Too quiet in the first half. Popped up with a chance in the second and did improve but not enough impact.
SUB: James Tomkins (43' for Clyne) - 6/10
SUB: Jeffrey Schlupp (74' for Eze) - 6/10
SUB: Jean-Philippe Mateta (84' for Edouard) - N/A
SUB: Will Hughes (84' for Doucoure) - N/A
Manager: Patrick Vieira - 7/10 - His team was set up really well, with players perfectly understanding their roles - especially in midfield. Palace were fully in it until a late moment of magic from a player he helped develop.
2. Chelsea (4-2-3-1)
GK: Kepa Arrizabaaga - 7/10 - Made what ended up being an important save from Zaha in the second half.
RB: Reece James - 7/10 - Kept Zaha quiet in the first half and it was telling that the Palace winger later swapped sides.
CB: Thiago Silva - 6/10 - Arguably luck to stay on the pitch for a cynical and overtly deliberate handball. But then assisted the equaliser.
CB: Wesley Fofana - 7/10 - Passed it well and seemed to read play.
LB: Ben Chilwell - 5/10 - Lacked quality getting forward and Zaha had considerably more joy against him than James.
CM: Jorginho (c) - 4/10 - Didn't have his usual flawless passing and didn't win his duels. His afternoon also ended prematurely because of injury.
CM: Mateo Kovacic - 5/10 - Sometimes struggled to cope with the quickness in the Palace midfield.
RM: Raheem Sterling - 5/10 - Hit the post in the first half and it seemed like it wasn't going to be his day. Something was missing.
AM: Kai Havertz - 5/10 - Not very influential and lacked quality.
LM: Mason Mount - 5/10 - Missed a couple of first half chances.
ST: Pierre-Emerick Aubameyang - 7/10 - Marked his return to Premier League football with a clinical finish.
SUB: Ruben Loftus-Cheek (56' for Jorginho) - 6/10
SUB: Armando Broja (75' for Aubameyang) - 5/10
SUB: Conor Gallagher (76' for Havertz) - 7/10
SUB: Christian Pulisic (84' for Mount) - 7/10
Manager: Graham Potter - 8/10 - Injuries and the international break have limited his chance to work with the players. It wasn't a game full of quality, but his substitutes made the ultimate difference.