West Ham's six-game unbeaten run came to an end as a Jordan Ayew winner saw Crystal Palace take all three points back to South London.
Story of the match
West Ham dominated the majority of the possession during the opening 10 minutes but it was Crystal Palace who looked more dangerous going forward early on, Joel Ward almost finding a teammate with his teasing ball across the six-yard box.
It took 28 minutes for either side to manage a shot on target, however, Sebastien Haller almost put his side 1-0 up with the game’s first big chance, the Frenchman unable to convert from close-range after he was picked out by the in-form Andriy Yarmolenko.
Haller’s opportunity seemed to bring the game to life as Felipe Anderson went close with two attempts moment later, the first a volley at the back post and the second a diving header which was saved comfortably by Vicente Guaita.
Palace responded well and nearly took the lead themselves, Wilfred Zaha squaring to Jordan Ayew in the box, but a clearance off the line from Ryan Fredericks denied Palace’s number nine a goal.
The home side should have broken the deadlock through Manuel Lanzini just before the interval, however West Ham’s playmaker missed a great chance as he dragged his shot wide.
Manuel Pellegrini's half-time team talk had an immediate impact as his side went ahead shortly after the break through Haller, West Ham's talisman tapping home from inside the box following Fredericks' cut back.
The lead didn't last long though as the Eagles equalised just after the hour-mark, Patrick van Aanholt scoring from the spot after Declan Rice was penalised for a handball inside the penalty area.
Following two quick goals to start the second half, the game looked open for either side to find a winner, both teams threatening every time they pressed forwards but were equally unable to manage any significant efforts on goal.
With 85 minutes on the clock goalscorer van Aanholt made a vital interception to deny the hosts a late winner, the Dutchman beating Haller to the ball as the forward looked set to unleash a strike.
The best drama of the second half was saved for the final minutes as the visitors snatched a dramatic late winner through Ayew on 87 minutes, a strike that was originally ruled out for offside by the linesman.
A VAR check left an anxious London Stadium waiting for a few minutes before sending the travelling Palace fans into jubilation as the decision was overturned, making it 2-1 to the visitors.
Despite a couple of late attempts from the home side, Roy Hodgson's team held on to take all three points.
VAR strikes again at the London Stadium
There were a number of checks during the first game of the season at the London Stadium against Manchester City, and VAR was called upon again as it overturned the linesman's decision to give Crystal Palace victory.
Sebastien Haller scores again
West Ham's new frontman continued his season with another good performance, notching his fourth Premier League goal.
The centre-forward was important to his team's build-up, bringing teammates into the game with good hold-up play, and he also showed his attacking instinct with a well-taken finish.