Yannick Bolasie had given them a dream start when he thundered the ball past Simon Mingolet 20 minutes in, but Philippe Coutinho would respond for Jurgen Klopp’s side before half-time.
However Palace continued to carve out opportunities and Dann headed home at the second attempt in the 82nd minute to restore a lead that Alan Pardew’s men saw out to end a month-long wait for a win.
The early exchanges brought plenty of Palace pressure, with the unorthodox strike partnership of Bolasie and Bakary Sako making their presence felt early doors which led to plenty of possession for the visitors in the final third, but chances were few and far between with Coutinho and Yohan Cabaye seeing shots from range sail off target.
But Palace capitalised on their bright start by grabbing the lead on 20 minutes. A mistake by Alberto Moreno allowed Sako to seize the ball and find Wilfried Zaha out on the right, and the winger centred low into the area where a poor touch by Emre Can saw Bolasie grab possession, get the ball under control and drill it past Simon Mignolet to notch his second of the season.
Liverpool inevitably responded by putting much more emphasis into their attacks and would go on to boss the remainder of the half, firstly calling Wayne Hennessey into action when a Jordon Ibe corner was met by Christian Benteke but his downward header was pushed away by the Welsh stopper.
The Belgian fluffed a big chance when the ball got stuck between his feet as he looked destined to bury a golden opportunity after good link-up play by Nathaniel Clyne and Adam Lallana, but he continued to look threatening and headed over soon after.
However the sides would ultimately go into the break level when the Reds equalised three minutes before half-time. Ibe found an overlapping Clyne on the right and the ex-Eagle replicated Zaha by putting the ball low into the area. Lallana then cleverly flicked the ball from behind him towards Benteke, but it missed the striker and instead found a lurking Coutinho who swept the ball past Hennessey
Before the half-time whistle blew substitute Dejan Lovren would have two chances to score headers from corners, finding Hennessey with the first before James McArthur blocked another goalbound attempt with Lucas viciously firing the rebound narrowly over in the final seconds.
Benteke was at it again after the restart when he was once again given time inside the box to compose himself but he screwed his attempt over under pressure from Pape Souare.
On the hour mark Palace had a brilliant chance to go back ahead when a clearance downfield found Zaha who powered his way past a couple of Liverpool defenders before squaring for Sako who was free in the middle, but he could only hit the side netting from a tight angle.
The game flowed from end to end and Benteke saw yet another header go over before Lallana hit a first-time attempt into the Kop, but Jason Puncheon nearly netted a Goal of the Month contender when he let fly from 30 yards and his stinging shot was pushed away by a flying Mignolet.
But with eight minutes to go the Eagles got their noses back in front. A Cabaye corner was met powerfully at the back post by Dann but his effort was stopped by Mignolet, however the centre-back was first onto the rebound to head it into the unguarded net and send the travelling fans wild.
Before the three points could be claimed though Hennessey made a spectacular save to tip over a fierce shot by Coutinho from the edge of the box, but the visitors nullified the threat from Klopp’s men to once again claim victory against the Reds.
Liverpool: Mignolet, Moreno, Sakho (Lovren 40), Skrtel, Clyne, Lucas, Can (Firmino 65), Lallana, Coutinho, Ibe (Origi 88), Benteke. Subs not used: Bogdan, Allen, Teixeria, Brannagan.
Palace: Hennessey, Kelly, Dann, Delaney, Souare, Cabaye (Mutch 87), McArthur, Zaha, Puncheon (Ledley 79), Sako (Wickham 65), Bolasie. Subs not used: Speroni, Ward, Hangeland, Bamford.