West Ham moved to within a point of the Premier League's top four with a 3-2 win at Crystal Palace on New Year's Day, although they survived a late scare at Selhurst Park.
Arsenal's late defeat to Manchester City in Saturday's early kick-off opened the door for David Moyes' men to really strengthen their Champions League credentials with a positive result.
The hosts nearly took the lead inside 60 seconds when Jeff Schlupp struck the post from close range, with Christian Benteke's bobbling cross falling to him on his weaker right foot.
While Palace dominated the opening exchanges, they relied on a superb double save from Vicente Guaita to deny West Ham a 14th-minute lead. The Spaniard was alert to claw Michail Antonio's shot away, before just about getting up and clearing Said Benrahma's header.
But Guaita was unable to keep out Antonio not long after as the Jamaica international put West Ham in front. Benrahma's teasing cross cleared the head of Joachim Andersen, and Antonio got in front of Marc Guehi to poke home.
Despite their slow start, the Hammers found themselves two to the good just moments after Antonio's opener. Declan Rice drove through the Palace midfield and squared it to Manuel Lanzini, who juggled with the ball before firing a beauty past a helpless Guaita.
Odsonne Edouard missed a glorious chance to pull one back but his strike rattled the crossbar, before Benteke's quick snapshot was saved by the feet of Lukasz Fabianski.
Patrick Vieira - back in the dugout after a bout of coronavirus - will have been pleased with his side's continued response before the break, with Benteke again testing Fabianski and Andersen doing well to deny Jarrod Bowen at the other end.
Despite Palace's promising resilience, club captain Luka Milivojevic conceded a penalty for a handball after a lengthy VAR check. Lanzini stepped up and converting the resulting spot kick.
Tyrick Mitchell had a slashing effort deflected just over the top the other side of half time, while Edouard similarly fired into the Holmesdale Road end.
A quieter second half was natural, though Antonio did his best to liven proceedings up again with a smart volley, but it sailed wide.
Palace eventually pulled one back with eight minutes remaining, with Edouard tapping in substitute Michael Olise's teasing cross.
And the hosts set up a grandstand finish when Olise's in-swinging free-kick went straight into the far corner of Fabianski's net with stoppage time looming.
The Selhurst Park faithful rose to their feet in expectation as the ball dropped to Jean-Philippe Mateta for the final kick of the game, but his overhead kick went just wide and West Ham escaped with the three points.
Crystal Palace player ratings
1. Goalkeeper & defenders
Vicente Guaita (GK) - 6/10 - Made a few smart stops to keep West Ham at bay but was ultimately unable to keep them out forever.
Joel Ward (RB) - 4/10 - Powerless to keep Benrahma from running the show.
Joachim Andersen (CB) - 6/10 - Superb recovery challenge on Bowen late in the first half.
Marc Guehi (CB) - 4/10 - Lost Antonio for the opener and Palace never tangibly recovered.
Tyrick Mitchell (LB) - 5/10 - Would have made more sense to bomb on more often with Edouard playing so narrowly.
Luka Milivojevic (DM) - 1/10 - Looked incredibly off the pace, resulting in a lazy handball. A day to forget.
Jeff Schlupp (CM) - 6/10 - Did well bursting forward in the absence of Conor Gallagher.
Will Hughes (CM) - 3/10 - Passing was a little sloppy and while Schlupp thrived, Hughes wilted without Gallagher in the side.
Jordan Ayew (RW) - 3/10 - Another game where Ayew's main contribution was winding up the full-back rather than having a meaningful impact on the game.
Christian Benteke (CF) - 5/10 - Made himself a nuisance and linked up well with Edouard at times.
Odsonne Edouard (LW) - 7/10 - Moved centrally to accompany Benteke but didn't have his best sights of goal until the Belgian was hooked.
Jean-Philippe Mateta (CF, 60' for Milivojevic) - 4/10 - Was definitely not a better fit than Benteke, but came within an inch of scoring a memorable equaliser.
Michael Olise (AM, 68' for Benteke) - 9/10 - His creativity was just the shot in the arm that Palace needed. Unfortunately, they were already 3-0 down.
Jairo Riedewald (CM, 75' for Hughes) - 5/10
West Ham player ratings
5. Goalkeeper & defenders
Lukasz Fabianski (GK) - 7/10 - Some top reaction saves but was unable to preserve his clean sheet.
Vladimir Coufal (RB) - 5/10 - Did his job and that was about it. A relatively quiet evening.
Craig Dawson (CB) - 7/10 - Stuck close to Benteke to slow him down. Remained a cool head as Palace rallied late in the game.
Issa Diop (CB) - 5/10 - Naturally found it easier without having to man-mark Palace's biggest threat, though did lose the run of Edouard late on and gave away a needless free-kick for Palace's second .
Ben Johnson (LB) - 6/10 - Had a very busy first half in which he picked up a booking and was subsequently hooked at the break.
Declan Rice (CM) - 8/10 - Neutrals relishing a Gallagher-Rice duel would have been left disappointed by the team news, but not by the all-round performance of the West Ham captain.
Tomas Soucek (CM) - 6/10 - Easily squashed Milivojevic in the midfield battle, though this isn't saying much.
Manuel Lanzini (AM) - 9/10 - Has now scored 13 goals in 34 London derbies, and his first of the evening near rivals his screamer against Spurs last season in terms of technique.
Jarrod Bowen (RW) - 6/10 - One of his quieter games, not that it was to West Ham's detriment.
Michail Antonio (CF) - 8/10 - Put himself about and was rewarded with a goal. A return to the Antonio of old.
Said Benrahma (LW) - 8/10 - A joy to watch again and he will be missed while away at the Africa Cup of Nations.
Arthur Masuaku (LB, 46' for Johnson) - 6/10 - Had an eventful half clamping down Palace's right-hand side.
Nikola Vlasic (LW, 71' for Benrahma) - 5/10
Mark Noble (CM, 88' for Lanzini) - N/A