West Ham stormed back from behind to beat Crystal Palace 3-2 in a thrilling contest and win a third straight Premier League game for the first time in two years.
James McArthur had put Palace ahead after just six minutes with his second goal in three games.
But Robert Snodgrass' impressive equaliser – his first Premier League goal for 705 days – changed the momentum just after half-time, with Javier Hernandez and Felipe Anderson then striking to wrap up a 17-minute blitz.
Manuel Pellegrini's men held on for a dramatic victory despite a late reply from Palace substitute Jeffrey Schlupp, moving into the top 10 as a result, as struggling Palace, who have one win in 11 top-flight games, slipped to 16th.
Hernandez's scuffed finish failed to beat Wayne Hennessey from an excellent early opportunity, and West Ham rued that when Palace went straight up the other end to strike.
Patrick van Aanholt's free-kick was flicked on by James Tomkins and indecisive keeper Lukasz Fabianski was beaten to it by McArthur who, left in oceans of space by the home defence, prodded in from six yards.
West Ham had more of the play for the rest of the half, but almost fell two behind moments before the break when Luka Milivojevic curled a 25-yard free-kick against the crossbar.
Andy Carroll replaced Lucas Perez at the break, but it was Snodgrass who struck within three minutes of the restart, sending a dipping 20-yard strike inside Hennessey's near post.
And the turnaround was complete after 62 minutes, Hernandez reacting sharply to fire in a left-footed strike after Felipe Anderson's free-kick was only parried by Hennessey.
With West Ham's next attack, Felipe Anderson scored his fifth goal in six games, curling a stunning strike into the far corner from the edge of the area, having been found by Hernandez.
Hernandez then fired inches wide, and Schlupp ensured a nervous ending by heading in Max Meyer's cross with 14 minutes left, but the Hammers held on.
What does it mean? Pellegrini has West Ham rolling
Felipe Anderson looks the part, Declan Rice was a force in midfield here, and Hernandez is showing his goal-poaching prowess as West Ham find their form and look a completely different side to the one that made such a poor start under Pellegrini. Their three wins have seen them score three times in each game, and London Stadium was bouncing on Saturday.
Palace have been struggling for goals this season, but while they netted two here, their lack of confidence showed as they failed to build on a half-time lead and an opening period where West Ham had largely huffed and puffed.
Snodgrass gets the job done
He may not be the flashiest name in West Ham's expensively assembled squad, but Snodgrass' stylish goal was absolutely vital in turning this game around. He also created three chances for his team-mates, more than anyone in either side.
Palace need more from Zaha
Wilfried Zaha is Palace's star man, but he has now gone 10 Premier League matches without scoring after netting three in his first four games. He barely made an impact here, with just one shot on goal and zero chances created. Roy Hodgson needs to find a way to get him back on track, but a late booking means the former Manchester United forward is now suspended for a game.
Key Opta Facts
- This was Crystal Palace’s 50th defeat in a Premier League London derby in their 91st such match, the fastest London club to reach that total in the competition, overtaking Fulham’s 99 games.
- Crystal Palace have picked up just 12 points after 16 Premier League games this season; only in 2017-18 (11) have they had fewer after 16 games of a top-flight season (assuming 3 pts/win).
- West Ham have won three consecutive top-flight matches whilst scoring 3+ goals in each game for the first time since October 1982.
- All 49 of Hernandez's goals in the Premier League have come from inside the box; only Tim Cahill (56) has scored more with 100% coming from inside the penalty area.
Palace are at home to Leicester City next Saturday as they desperately bid to get their season back on track, the same day as West Ham have another London derby, this time at Craven Cottage against struggling Fulham.