Mohamed Salah's brace moved Liverpool seven points clear of Manchester City in the Premier League title race as Julian Speroni's error saw Crystal Palace go down 4-3 at Anfield.
Palace led thanks to Andros Townsend's first-half goal, but quickfire strikes from Salah and Roberto Firmino turned the game around eight minutes into the second half.
James Tomkins headed Palace level but an awful error by veteran goalkeeper Speroni, tipping James Milner's cross towards his own goal for Salah to score his 50th goal in the Premier League, gave Liverpool a lead that was later added to by Sadio Mane.
Palace netted a stoppage-time consolation through Max Meyer but Liverpool - who had Milner sent off for a second bookable offence late in the second half - held on to stretch their cushion at the top, with Manchester City away to managerless Huddersfield Town on Sunday.
Fabinho fired an early effort over Speroni's crossbar, the 39-year-old goalkeeper becoming the oldest player to feature in the Premier League this season.
Joel Matip then headed a Milner corner narrowly wide as Liverpool pushed for the opener, but it was Palace who took the lead in the 34th minute.
Townsend, who moments earlier survived a penalty appeal for handball, slammed in a first-time finish after Wilfried Zaha beat makeshift right-back Milner far too easily to send in a fizzing low cross.
But Liverpool were level within a minute of the restart, Salah pouncing from close range with a deft close-range finish after Virgil van Dijk's speculative drive deflected high into the air.
Within seven minutes Liverpool were in front after another stroke of fortune, Naby Keita setting up Firmino for a shot that took a deflection to beat the helpless Speroni.
Palace drew level in the 65th minute, however, as Tomkins took advantage of slack marking to head home Luka Milivojevic's corner at the back post, but Liverpool hit back again 10 minutes later.
Speroni's misjudgment of a Milner cross saw the ball again loop invitingly for Salah to finish from virtually on the line.
Jeffrey Schlupp missed a great chance to score an equaliser for Palace and Liverpool were reduced to 10 men after Milner was dismissed for a second yellow card having tripped Zaha.
But Liverpool's threat on the counter was maintained and they made sure of the points in the third minute of added time when Mane cut in from the left wing to beat Speroni.
Show me the Mané! 🤑 GOAL Sadio! pic.twitter.com/VqoUPE9AOd— NBC Sports Soccer (@NBCSportsSoccer) January 19, 2019
There was still time for yet another goal, though, as substitute Meyer beat Alisson from inside the box.
What does it mean? Palace almost party-poopers again
Winning a title needs some luck and Liverpool certainly had fortune on their side as Salah and Firmino benefited from deflections to score before Speroni gifted them the third goal. Former Reds boss Roy Hodgson will be wondering how his side managed to lose after scoring three.
Salah instinct brings up milestone
Liverpool were indebted to Salah for his brace, the goals coming from a combined distance of about five yards out. He may have had little impact outside of those twin moments but, as he has so often, Salah's quality made a big difference. He now has 50 Premier League goals and only three players have reached that landmark in fewer appearances than his 72.
Salah simulation causes anger
The Egypt superstar scored twice, but there will be more debate about an incident in the first half that saw Salah go to ground in Palace's box exceptionally easily. After winning a number of recent penalties, Salah may be earning a reputation he will find it difficult to shake off. Palace defenders reacted angrily when he went down, but referee Jonathan Moss opted not to book Salah.
Crystal Palace host Tottenham in the FA Cup fourth round next weekend, but Liverpool are out so will be heading to Dubai for warm-weather training. The Reds return to Premier League action at home to Leicester City on January 30, the same day Palace are away to Southampton.