Chelsea’s lead at the top of the Premier League was cut to seven points after they suffered a shock home defeat by Crystal Palace and Tottenham beat Burnley.
Antonio Conte’s side had won their past 10 league games at Stamford Bridge and had not lost there in any competition since 16 September, but saw that run ended by a battling Eagles side.
Chelse struck first, when Cesc Fabregas turned home Eden Hazard’s cross after five minutes, but they were quickly behind.
Wilfried Zaha produced a fine solo finish to turn and fire home from the edge of the box and, 91 seconds later, set up Christian Benteke to put Palace ahead with a delicate dinked effort.
Chelsea piled on the pressure and had 24 shots at goal, their second-highest total in 29 league games this season.
But they could find no way past Eagles keeper Wayne Hennessey, who made 11 saves in total to ensure his side won a fourth successive game.