The Reds dominated the vast majority of the first half but it was the visitors who broke the deadlock through Andros Townsend, who beat Alisson from close range after Wilfried Zaha pulled a cross back.
But the hosts came out for the second period with goals on the agenda, and it took just one minute for Salah to equalise before they went ahead seven minutes later through Roberto Firmino.
Palace were not down and out just yet, though, and James Tomkins capitalised on poor defending to head his side level from a corner.
However, a calamitous error by Julian Speroni – making his first appearance since December 2017 – handed Liverpool an advantage they did not relinquish again, the visitors’ keeper scooping the ball towards his own net for Salah to poke in from on the line.
Sadio Mane scored the fourth in stoppage time, just after James Milner had been sent off for two yellow-card fouls on Palace’s Wilfried Zaha – though there was still time for Max Meyer to score a consolation for the visitors.