Andy Carroll stepped off the bench to head West Ham to a 2-1 comeback win over Southampton - their first Premier League victory in nine games.
Ronald Koeman's side - who had stunned Arsenal 4-0 on Boxing Day - dominated the first half and should have had more reward for their efforts than Carl Jenkinson's own goal.
But a double change by Slaven Bilic at the break paid off for the hosts, with substitute Carroll nodding in the winner with 11 minutes to play after Michail Antonio scored a fortunate equaliser.
The victory moves West Ham up to seventh and ends a run of five straight draws, while Saints stay 12th.
West Ham had gone into the match unbeaten in their last six Premier League home games and made a positive start, with Mauro Zarate clipping a shot wide before Enner Valencia saw a long-range drive blocked.
However, on 13 minutes Southampton took the lead through the first real chance of the match. Shane Long surged into the area after good play from the visitors and squared across the six-yard box, where Dusan Tadic deflected the ball onto Jenkinson, who sent the ball into his own net.
The visitors seized the initiative from there on, dominating possession and going close through Long before failing to convert a flurry of chances before the interval. Jose Fonte drew a dramatic save from Adrian, Sadio Mane shot wide and Tadic - after some neat footwork - fired at the 'keeper as Southampton pushed for a second.
After seeing his side outplayed for much of the first period, Bilic rang the changes at the break, throwing on Carroll and Manuel Lanzini for Zarate and Alex Song - and almost immediately got the response he was after.
Just two minutes after the re-start, James Collins' header was cleared off the line from an early corner before Carroll blew a golden opportunity, blasting over off the bar from five yards out with the goal at his mercy.
Carroll and Oriol Romeu then sent tame efforts goalwards at either end before West Ham pulled level in bizarre circumstances.
Antonio burst into the Southampton box but lost his footing and fell to the ground. However, Victor Wanyama, trying to clear, fired the ball into the West Ham man and the ball looped up and over Maarten Stekelenburg and into the net.
With the momentum on their side, West Ham surged forward looking for a winner, with Antonio teeing up Lanzini to shoot wide before Carroll seemed unfortunate to see a free-kick awarded against him rather than a penalty given in his favour when he collided with Ryan Bertrand in the box.
Southampton were far from pinned in their own half, but the visitors were stung on 79 minutes when Carroll put West Ham ahead.
Antonio - involved in all of West Ham's best moves - headed Valencia's cross against the underside of the bar and Carroll was quickest to react, pouncing on the loose ball to score his second of the season.
West Ham had to hold off a determined onslaught from Southampton in the closing stages but, aside from Virgil van Dijk's off-target shot, the hosts were largely untroubled and saw out the final minutes to sign off 2015 with a victory.
Player ratings
West Ham: Adrian (8), Jenkinson (5), Collins (7), Tomkins (6), Ogbonna (6), Song (5), Kouyate (6), Antonio (9), Noble (7), Zarate (6), Valencia (6).
Subs used: Carroll (7), Obiang (6), Lanzini (7)
Southampton: Stekelenburg (6), Martina (6), Fonte (6), Van Dijk (6), Bertrand (6), Wanyama (6), Romeu (6), Tadic (7), Mane (6), Steven Davis (7), Long (7).
Subs used: Yoshida (6), Juanmi (5), Ramirez (5)
Man of the match: Michail Antonio (West Ham)