Hammers full-back Aaron Cresswell was the match-winner as he cut inside from the left and fired an excellent right-footed strike finish past Kepa Arrizabalaga in the opening minutes of the second half.
The home side started the game in rapid fashion and created plenty of promising openings against a visiting side that started nervously, and had Chelsea taken one of their early chances, it would've likely been a much different result.
Frank Lampard's side lacked the killer touch to put this game to bed in an opening half-hour that they dominated, and a lack of creativity in the second half will be a worry ahead of a busy December.
Manager Rating out of 10
5 -- Lampard opted to rest N'Golo Kante, and while he did bring on the Frenchman on the hour, the Chelsea midfield lacked energy and was often overrun by a West Ham outfit that grew into the game.
Player ratings (1-10; 10 = best. Players introduced after 70 minutes get no rating)
GK Kepa Arrizabalaga, 6 -- The Spaniard made a couple of decent stops from headed West Ham chances, but had no chance of stopping Cresswell's perfectly placed winner.
DF Reece James, 7 -- A real threat on Chelsea's right flank, the 19-year-old showed bundles of pace and power, along with a string of quality crosses. The only blot on James' report card was unconvincing defending on the West Ham winner.
DF Kurt Zouma, 5 -- Should have hit the target with a free header midway through the first half, before dreadful defending allowed Michail Antonio the chance to bundle the ball home for 2-0, only for Chelsea to be given a reprieve thanks to VAR.
DF Fikayo Tomori, 6 -- The reigning Derby County Player of the Year looked the more composed of Chelsea's central defensive pairing, and didn't find himself in any direct danger against the isolated Antonio.
DF Emerson, 6 -- Spent plenty of time in the opposition's defensive third, and could well have had an assist or two to his name if Chelsea's forwards were more clinical.
MF Jorginho, 5 -- A slightly off-colour display from the Italian, who never really stamped his authority on a midfield that was crying out for some composure and control. Replaced by Kante on 63 minutes.
MF Mateo Kovacic, 6 -- The former Real Madrid man had a couple of sights of goal and was positive on the ball, but needed to do more when West Ham started to get a grip on the game.
MF Mason Mount, 5 -- Buzzed around the pitch and showed plenty of intent in the opening stages, but never seriously tested the goalkeeper, and quickly faded out of the game in an ineffective second half.
FW Christian Pulisic, 6 -- Looked Chelsea's most threatening attacking player, causing all sorts of problems for the Hammers backline. That said, he was wasteful with his chances to score, including slicing a late chance wide.
FW Olivier Giroud, 6 -- The stand-in striker had enough glimpses at goal to make a telling contribution, but fluffed his lines when it mattered. Brought off for Callum Hudson-Odoi for the final 19 minutes.
FW Pedro, 5 -- Offered a fleeting threat going forward, but needed to do more to help his full-back as West Ham's Cresswell cut in from the left to fire the Hammers ahead. Replaced by Willian after 62 minutes.
MF N'Golo Kante, 6 -- An ineffective cameo from the No. 1 central midfielder in the ESPN FC 100.
FW Willian, 6 -- Looked the brightest of Chelsea's subs, but couldn't get into enough dangerous positions to make a telling impact.
FW Callum Hudson-Odoi, N/R -- Couldn't lay a glove on a determined visiting defence.