West Ham survived a late fightback from Crystal Palace to win 3-2 at Selhurst Park to help David Moyes celebrate two years in charge with another three points.
Two goals in three first-half minutes helped the Hammers take control of the London derby with Michail Antonio’s ninth goal of the season opening the scoring after 22 minutes before Manuel Lanzini produced a sumptuous finish soon after.
Lanzini added a second from the penalty spot but late efforts by Odsonne Edouard and Michael Olise set up a grandstand finish, only for West Ham to hold out to make it back-to-back victories.
The hosts were boosted by the return of boss Patrick Vieira after his period of isolation for testing positive for Covid-19 ended but there were various other Palace absentees including Conor Gallagher, Cheikhou Kouyate and Wilfried Zaha.
Jeffrey Schlupp was one of those still available in midfield and having scored the club’s last goal of 2021, he should have grabbed their first of the new year inside 60 seconds but hit the post from six-yards after a Jordan Ayew cutback.
West Ham had their backs to the wall during the opening exchanges and yet burst into life just before quarter of an hour when Vicente Guaita was tested twice in quick succession.
The Hammers’ full-backs Ben Johnson and Vladimir Coufal combined to set up Antonio, who saw a volley saved before Guaita palmed away the loose ball and then reacted superbly to thwart a follow-up header by Pablo Fornals.
It was now Moyes’ side in the ascendency and unlike Palace they made their dominance count with two goals in quick succession.
Antonio, who struck in the 2-2 draw between the teams in August, broke the deadlock after 22 minutes when he guided home Said Benrahma’s tantalising deep cross from the left.
Palace had barely gathered the ball out of their net when it was 2-0, with the returning Declan Rice playing a key role for the visitors.
The England international carried the ball from inside his own half and spotted the run of Lanzini, who produced a sensational couple of touches to get past Joachim Andersen before he rifled high into the net.
Vieira’s men recovered well and Edouard smashed against the crossbar after more good work by Ayew while Christian Benteke was denied on two occasions by Lukasz Fabianski, but a costly error by the home captain put the result to bed at half-time.
Luka Milivojevic attempted to control a bouncing ball which flicked his arm and was deemed inside the penalty area by referee Darren England after VAR told the official to review the incident on the pitchside monitor.
Lanzini made no mistake from 12 yards deep into first-half stoppage-time for his fifth goal of the season.
Palace attempted to rally after the break and Edouard fired two efforts off target before he snatched at another following a fine lay-off by substitute Jean-Philippe Mateta, who had also been joined on the pitch by Olise.
West Ham remained a threat and Antonio almost grabbed another with a strike that sailed wide before a nervy finale occurred for the away side.
Olise picked out Edouard inside the area and the forward poked home with seven minutes left, before the substitute reduced the deficit even more.
A free kick from Olise on the right evaded everyone to find the net in the 90th minute but Mateta was unable to complete a remarkable comeback when his spectacular overhead kick attempt went off target in added time.
It ensured Moyes, who has transformed the club since his appointment at the end of 2019, watched West Ham move within a point of the top-four.