Liverpool cut the gap on Premier League leaders Manchester City to three points after a tense 1-0 victory at home to West Ham.
Saturday's hosts must have thought they were in for a comfortable evening after slicing the Hammers open at will early on, but David Moyes' men battled back and made it a competitive affair at Anfield.
The Reds should have taken the lead inside the first minute. Nikola Vlasic was flagged offside for West Ham, and Trent Alexander-Arnold quickly played the resulting free-kick long and into the path of Mohamed Salah, but Lukasz Fabianski stood tall to deny the Egyptian.
Jurgen Klopp's men continued to apply early pressure, with Salah dragging another shot wide after Luis Diaz's initial strike smacked Craig Dawson square in the face.
At the other end, Michail Antonio twice wriggled away from Ibrahima Konate and Virgil van Dijk to fire at goal, with two shots stinging the palms of Alisson in the opening exchanges.
But Liverpool took the lead with 27 minutes on the clock when Alexander-Arnold's shot bounced into the path of Sadio Mane to tap home, and the goal stood following a lengthy VAR check for offside against the Senegalese.
Kurt Zouma hauled down Diaz after a sensational run right through the heart of West Ham's midfield and defence, and Alexander-Arnold nearly found the top corner from the free-kick awarded to the hosts.
West Ham somehow survived a goalmouth scramble with Alexander-Arnold looking to tee up Salah and Diaz again, but nearly found a leveller when Ben Johnson sent Pablo Fornals through on goal. The Spaniard's lob over Alisson was cleared off the line by the England right-back, and the visitors were unable to net from the 18-yard-box mayhem that followed.
A cagey second half finally yielded a chance after the hour mark when Diaz so nearly picked out the far corner on the break, before two tame strikes from Salah trickled into Fabianski's grasp.
But West Ham should have been level when Tomas Soucek picked out Manuel Lanzini, who somehow blazed over from little more than six yards out.
Substitute Mark Noble then slipped Antonio through, and after playing him onside, Naby Keita recovered in time to deny the Jamaica international.
Liverpool player ratings
1. Goalkeeper & defenders
Alisson (GK) - 7/10 - Made himself look a hundred feet tall in between the sticks.
Trent Alexander-Arnold (RB) - 9/10 - Made a huge difference at both ends of the pitch, proving a source of creation and sweeping up at the back.
Ibrahima Konate (CB) - 4/10 - Found it tough trying to deal with West Ham's bursts forward.
Virgil van Dijk (CB) - 3/10 - A surprisingly poor game by his standards. Often out of place when Liverpool tried to trigger the offside trap and didn't use his physicality to impose himself.
Andy Robertson (LB) - 5/10 - A quiet game for the Scot, who was steady in defence but overlooked in attack.
Fabinho (DM) - 7/10 - So quick to everything in midfield and made a few decent pings too.
Jordan Henderson (CM) - 6/10 - Kept things tidy and ticking without being amazing.
Naby Keita (CM) - 5/10 - Wasteful and had no idea how to play an offside trap.
Mohamed Salah (RW) - 6/10 - Very busy following the first kick-off but faded out of the game after being double and triple teamed. Subbed for Jota.
Sadio Mane (CF) - 8/10 - Pressed hard and asked plenty of questions of the West Ham backline.
Luis Diaz (LW) - 9/10 - The perfect Liverpool player. Plays the game at a million miles an hour and was a constant menace.
Diogo Jota (RW, 79' for Salah) - 5/10
James Milner (CM, 90' for Keita) - N/A
Curtis Jones (LW, 90' for Diaz) - N/A
West Ham United player ratings
5. Goalkeeper & defenders
Lukasz Fabianski (GK) - 7/10 - Made several good stops, but will be annoyed that he wasn't able to intercept the ball for Mane's first-half strike.
Ben Johnson (RB) - 7/10 - Carved Liverpool apart with a beautiful cross-field ball before the break and generally held his own despite Diaz's presence.
Craig Dawson (CB) - 6/10 - After a torrid start, Dawson recovered well to limit Liverpool's shots at goal, but was in the same camp as Fabianski regarding Mane's goal.
Kurt Zouma (CB) - 5/10 - Didn't look quite as assured as his defensive partner.
Aaron Cresswell (LB) - 7/10 - Like Johnson made a good mark of himself in spite of Liverpool's forays into dangerous areas.
Tomas Soucek (CM) - 6/10 - Got stuck in and should probably have had an assist to his name.
Pablo Fornals (CM) - 5/10 - Missed a gilt-edged chance to get West Ham back into the game which seemed to knock his confidence.
Manuel Lanzini (CM) - 6/10 - Missed a chance even better than that of Fornals' but still stood up and maintained his involvement.
Jarrod Bowen (RW) - 4/10 - Was very quiet in front of his admirers before he was forced off with injury at the start of the second half.
Michail Antonio (CF) - 6/10 - Had his fingerprints all over the first half but wasn't as busy after the interval.
Nikola Vlasic (LW) - 2/10 - Only notable moment of the game was failing to convert from the scramble that followed Fornals' failed dink.
Said Benrahma (LW, 53' for Bowen) - 5/10 - Involved plenty but lacked end product.
Mark Noble (CM, 61' for Vlasic) - 6/10 - Helped maintain West Ham's proficiency on the break.
Daniel Chesters (CF, 90' for Fornals) - N/A