Chelsea were denied their sixth successive Premier League win as London rivals West Ham held them to a 0-0 draw at the London Stadium.
Maurizio Sarri’s side suffered an afternoon of frustration but could easily have lost, Andriy Yarmolenko nodding a great chance wide late on.
West Ham, boosted by their first win of the season at Everton, began brightly but Chelsea created the first threat when Willian crossed towards Olivier Giroud before the home side cleared.
Yarmolenko, who scored twice at Goodison Park, found Mark Noble on the edge of the area and Felipe Anderson swiped in a shot that was blocked by N’Golo Kante.
Pablo Zabaleta found space down the right but miscontrolled as he looked to create a crossing opportunity and saw the ball trickle out for a goal-kick.
Giroud struck straight at Lukasz Fabianski from a Willian corner as a high-tempo opening 10 minutes continued, and Eden Hazard fired too close to the keeper after neat build-up play involving Jorginho and Willian.
Fabianski claimed a Willian cross as the visitors began to increase the pressure before Marcos Alonso found Kante, whose header back across the area eluded his teammates.
Giroud was unable to make proper contact with a Jorginho cross but West Ham burst into life on the half-hour and Michail Antonio fired over after Anderson’s run had set him up on the left of the area.
A minute later the Hammers were even closer, Antonio superbly thwarted by Kepa from close range after Yarmolenko had created the opening.
Hazard, who had appealed in vain for a free kick on the edge of the box moments earlier, was crowded out as Chelsea tried to get back on the front foot before play switched back to the other end and Zabaleta’s cross was too deep for Antonio.
Kante guided a header wide from Willian’s first-time ball into the area as the first half ended goalless.
Yarmolenko made an early run down the right after the break, Chelsea’s Kante booked for a clumsy foul on Anderson soon afterwards before Yarmolenko sent a curling strike over.
Anderson went into the book for a foul on Willian, who had skipped away from him, but the free kick came to nothing, and David Luiz headed over from a corner with the Blues finding it increasingly difficult to carve out opportunities.
Sarri made the game’s first change after 65 minutes, Giroud making way for Alvaro Morata, with West Ham bringing on Lucas Perez for Antonio shortly after.
Hazard almost teed up Morata with a flick inside the penalty area, and within seconds the striker was in on goal again only to be denied by another excellent Fabianski save.
Another Chelsea change came on 69 minutes, Gary Cahill on for Antonio Rudiger who appeared to tweak a muscle, with Cesar Azpilicueta crossing towards Hazard, who could not steer his header on target.
Robert Snodgrass entered the fray for West Ham, replacing Anderson as the game approached its final quarter of an hour, before another Hazard flick failed to find its target and a bouncing Luiz free kick was held by Fabianaki.
The home side should have made the breakthrough after 77 minutes, the unmarked Yarmolenko heading wide from close range after Snodgrass had picked him out with a teasing cross.
Chelsea responded with another change, Ross Barkley coming on for Mateo Kovacic, and as time ticked into the last five minutes Noble was replaced by Carlos Sanchez.
Kante fired over after a Willian pass, a curling Barkley strike was tipped away by Fabianski and Willian lashed wide as Chelsea tried to engineer a late winner.
They had one more chance when Snodgrass fouled Willian, a challenge for which he was booked, but the free kick came to nothing as West Ham held on to collect their fourth point from the last two games.