A slow first half saw little created from either side. While Chelsea enjoyed the majority of the possession, much of their work was too cautious and easy to defend against from a West Ham perspective.
Jarrod Bowen started the second half strongly with some direct play that allowed him to get a cross in from the byline after beating Marc Cucurella, though that did little to ignite the home side, who continued to be frustrated by the Irons' defence. Thomas Tuchel reacted on the hour mark by introducing Mason Mount and Armando Broja, only to find his side go 1-0 down just moments later when Edouard Mendy's punch was directed straight into Declan Rice, who assisted Michail Antonio for the opener.
Chelsea restored parity 16 minutes later when substitute Ben Chilwell directed the ball past Lukasz Fabianski from a narrow angle, and it was the 25-year-old involved again after he then cut the ball back for Kai Havertz, who put the Blues into the lead.
West Ham thought they had an equaliser late on when Maxwel Cornet smashed the ball into the back of the net from Mendy's parry, only for a VAR review that saw Bowen adjudged to have fouled the goalkeeper seconds before the finish to give Chelsea all three points in front of their home crowd.
The decision, deemed "scandalous" by West Ham manager David Moyes after the match, will linger for some time in the minds of the visiting fans. "I am amazed that VAR sent the referee to see it. I thought even if he goes to the TV, there's no way he's overturning it. It was a ridiculously bad decision. The referee should have taken responsibility, there is no excuse for that not to be a goal.
"I've lost faith in the people who are putting it up for VAR. I can't see how the goal isn't given."
One of the few positives from Chelsea's performance on the day was how they controlled the game for the majority of the match against a pragmatic West Ham setup. It's vital to be able to grind out games in the Premier League, and they did that today with a little help from VAR.
Tuchel's side didn't do enough in attacking areas which saw their quality in the final third lacking for too much of the game. Mendy also looked to be low in confidence when being asked to deal with high-pressure situations.
Manager rating (out of 10)
Thomas Tuchel, 6 -- A strong defensive effort, as is often the case with Chelsea but, for a side looking to qualify for the Champions League, Tuchel's team selection looked too pragmatic against a West Ham side who were always going to look to defend from deep. Chilwell's introduction worked out to be an excellent decision from the Blues manager.
Player ratings (1-10; 10 = best, players introduced after 70 minutes get no rating)
GK Edouard Mendy, 4 -- Chelsea's goalkeeper rarely had much to deal with across the game, and that may have affected his concentration with his clearance that went into the path of Rice who assisted West Ham's opener. Questionable play also saw Mendy palm the ball out to Cornet for a potential equaliser, only for the goal to be disallowed following a VAR review.
DF Thiago Silva, 7 -- An assured performance from the experienced centre-back who didn't look to get out of second gear as he consistently dealt with West Ham's attacks.
DF Wesley Fofana, 6 -- Chelsea's new £75 million centre-back didn't look troubled on his Premier League debut for Chelsea, though that was in part due to West Ham's lack of promise going forward. The 21-year-old passed the ball well into the midfield, and he also found the right moments to run with the ball to help bypass the Irons' forward line.
MF Marc Cucurella, 6 -- Cucurella looked to get forward when he could, though he struggled to make an impact when finding himself in advanced positions. Replaced by Chilwell in the 72nd minute.
MF Conor Gallagher, 7 -- Gallagher looked to get forward and occupy the No. 10 position, and he showed plenty of intent to get Chelsea moving in the right direction. Gallagher's work rate on both ends of the pitch also stood out, at one point taking a corner before stopping the counter-attack himself.
MF Ruben Loftus-Cheek, 6 -- Loftus-Cheek rarely put a pass wrong, but much of his work was safe as he looked to transition the ball to the more creative players around him.
MF Reece James, 6 -- The England international was bright most of the game as he looked to beat his man down the right flank. He may count himself lucky after his poor header back to his own goal saw the resultant goal chalked off by VAR.
FW Raheem Sterling, 7 -- Sterling worked hard to find space in the channels but his team couldn't get the ball to him enough. He looked to be Chelsea's most effective player when the Blues went 1-0 down, with his crosses from wide positions asking questions of West Ham's defence.
FW Christian Pulisic, 7 -- The U.S. national team star ran the channels positively for Chelsea and was able to help link plenty of his side's most promising attacks. The 23-year-old was direct with the ball when in possession, but he could have been helped by better movement from his team.
Armando Broja (Gallagher, 61'), 6 -- Broja saw his effort stopped by Lukasz Fabianski which denied Chelsea an instant equaliser.
Mason Mount (Pulisic, 61'), 6 -- Mason Mount looked to play quickly when introduced, and he also occupied spaces that helped get Raheem Sterling on the ball more.
Kai Havertz (Kovacic, 72'), N/R -- The Germany international made some intelligent runs that looked to connect with crosses from Raheem Sterling, and it was from a cut-back that saw Havertz put Chelsea into the lead late on.
Ben Chilwell (Cucurella, 72'), N/R -- A quick impact from the bench saw Ben Chilwell register the equaliser with a delicate touch past Fabianski before assisting the winning goal.
Jorginho (Loftus-Cheek, 83'), N/R -- Introduced for the final spell of the game, helping improve Chelsea's tempo and cutting edge from midfield.