With second-placed Manchester City travelling to bottom-of-the-table Huddersfield on Sunday, Liverpool seized the chance to tighten their grip on the title race.
Jurgen Klopp’s side were pushed hard by Palace but Salah’s predatory instincts and a woeful mistake from Eagles goalkeeper Julian Speroni ensured Liverpool improved their unbeaten home league run to 32 games.
“He’s world class, simply world class,” Klopp said of Salah.
Liverpool’s haul of 60 points from 23 matches tops the Reds’ previous best tally of 59, set at the same stage of the 1893-94 and 1987-88 campaigns.
“We had to stay positive, being one down is not a massive blow. We just needed to win the second half,” Klopp said.
“We have 60 points now. It’s crazy.”
Palace, the last team to beat Liverpool in a Premier League game at Anfield, in April 2017, took a shock 34th-minute lead.
Wilfried Zaha picked out Andros Townsend, who drilled a crisp finish past Alisson Becker.
Salah equalised 60 seconds after the interval, the Egypt forward slotting in his 18th goal of the season after Virgil van Dijk’s shot deflected into his path.
Liverpool went ahead in the 53rd minute when Brazilian striker Roberto Firmino, surrounded by defenders, still managed to unload a shot that deflected in off Palace’s Cheikhou Kouyate.
James Tomkins out-jumped Fabinho to head Palace level in the 65th minute, yet Liverpool were gifted the crucial third 10 minutes later thanks to a howler from Speroni.
James Milner’s cross prompted a nervous flap from Speroni, who tipped the ball high over his own head and Salah was on hand to convert on the line.
Milner was sent off in the 89th minute for a second booking, but Liverpool made it four in stoppage-time through Sadio Mane before Max Meyer capped a frantic finale with Palace’s third.
Child’s play for Pogba
At the Emirates Stadium, fifth-placed Arsenal closed the gap on fourth-placed Chelsea to three points in the race to qualify for the Champions League with a 2-0 win.
Unai Emery’s team had lost three of their last six league games, sparking the first criticism of their Spanish manager.
But they tore into London rivals Chelsea, opening the scoring in the 14th minute.
Hector Bellerin’s cross found Alexandre Lacazette and the French striker took a touch before smashing a sublime strike past Kepa Arrizabalaga from a tight angle.
The Gunners increased their lead in the 38th minute when Laurent Koscielny mistimed his attempted header, only to see the ball bounce off his shoulder and loop into the net.
Arsenal’s Hector Bellerin was stretchered off in the second half, but spluttering Chelsea have now won only two of their last five matches.
“It was a big result. We wanted to do a special moment in this derby. Chelsea were six points ahead, so it helps us. We can be optimistic,” Emery said.
Manchester United beat Brighton 2-1 to make it seven successive wins since interim manager Ole Gunnar Solskjaer replaced the sacked Jose Mourinho.
Solskjaer’s sixth-placed side took the lead in the 27th minute at Old Trafford when Gaetan Bong conceded a penalty with a foul on Paul Pogba and the France midfielder stroked home the spot-kick.
Pogba’s “rocking the baby” celebration was to mark him becoming a father for the first time, with his girlfriend Maria Salaues believed to have given birth this week.
United winger Marcus Rashford marked his 150th game for the club with his side’s second goal in the 42nd minute, with Pascal Gross reducing the deficit in the 72nd minute.
Solskjaer, the first United boss to win his first six league games, said: “I can’t complain can I? I am smiling and this is one of these things I will remember for the rest of my life.”
Newcastle climbed out of the relegation zone with a 3-0 win over Cardiff at St James’ Park that saw their opponents drop into the bottom three.
Southampton boosted their bid to avoid relegation with a 2-1 victory against Everton at St Mary’s.
Diogo Jota’s hat-trick piled pressure on Leicester manager Claude Puel as the Wolves midfielder’s last-gasp strike secured a 4-3 win.
Bournemouth beat West Ham 2-0 with goals from Callum Wilson and Josh King, while Watford drew 0-0 against Burnley