The crucial breakthrough arrived in the 52nd minute when Joel Ward delivered an excellent cross from the left and John Terry headed the ball into his own net under pressure from Joe Ledley.
There had already been a couple of strong penalty appeals for Palace in the first half and Tony Pulis’ side created a host of chances in an open and exciting game, with Cameron Jerome striking the post.
Chelsea had their moments but Julian Speroni was in great form to twice deny Eden Hazard with fabulous saves, as Palace clung on for a deserved win.
It was Chelsea who had the first clear chance of the afternoon when Cesar Azpilicueta made an overlapping run and drilled a low cross into the six-yard box, but a fine Ward interception saw Andre Schurrle beaten to the ball.
Chelsea struggled to unlock the Palace defence and repeatedly looked to Fernando Torres early, only for the hosts to crowd out the striker.
Yannick Bolasie dragged a shot wide before missing a glorious opportunity after neat interplay on the right by Adrian Mariappa and Jason Puncheon.
Palace had two legitimate penalty claims in quick succession denied by referee Lee Mason.
Mariappa pulled the ball back towards Jerome, who was challenged from behind by Gary Cahill, who then showed an injection of pace to deny Bolasie a shooting chance, taking man and ball in another challenge which saw Palace pleading for a spot-kick.
The Palace onslaught continued as Terry brought down Ledley cynically, while also handling the ball, to concede a free-kick and receive a yellow card, but Mile Jedinak’s shot was comfortably saved by Petr Cech.
Chelsea, in need of invention, replaced David Luiz with Oscar at half-time, but it was Palace who resumed on the attack and, after Jerome was unable to direct a header from a Bolasie cross on goal, the hosts scored.
The overlapping Ward crossed from the Palace left and Terry climbed above Ledley, only to head into his own net.
Hazard tried to spark Chelsea, as he has so often this season, and made space to shoot from the edge of the area through a crowd of bodies, but Speroni turned the effort around the post.
Mohamed Salah replaced Frank Lampard as Jose Mourinho sought a further injection of creativity, but it was Palace who went close again, Puncheon firing narrowly wide across goal after Jerome’s direct run.
Terry, whose lack of pace was being tested on the counter-attack, headed an Oscar free-kick over at the other end.
Mourinho turned to Demba Ba for the final 20 minutes as Chelsea laid siege on the hosts’ goal.
Hazard found himself through one-on-one, but Speroni pulled off a miraculous save to deny the Belgium forward.
Chelsea’s forward focus left the defence further exposed and Palace’s pace again troubled the visitors, with Jerome going through to beat Cech with a shot which hit the post.
Ledley shot wide and Puncheon had an effort saved by Cech, who then had to tip substitute Stuart O’Keefe’s drive over.
A poor O’Keefe back-pass presented Torres with an opportunity, but the striker could only lob the ball over as Chelsea slipped to a fifth loss of the season and Pulis danced down the touchline in celebration of a potentially crucial victory.