Andy Johnson's goal took Crystal Palace out of the relegation zone but dented Liverpool's Champions League hopes.
Johnson connected with Wayne Routledge's miscued shot to head past Jerzy Dudek from 12 yards.
Tom Soares should have scored for Palace but scuffed his shot and Mauricio Pellegrino was able to clear.
Gabor Kiraly saved from Steven Gerrard as Liverpool rallied, but the Reds lost Milan Baros through injury and saw their hopes of finishing fourth fade.
The win - Palace's first since 26 February - was no less than the Eagles deserved for a tenacious, committed performance from the first whistle.
But it was a miserable afternoon for Liverpool, who are four points behind fourth-placed Everton having played a game more.
Rafael Benitez's gameplan almost had to be revised with just two minutes gone when Baros limped off after a heavy challenge from Tony Popovic.
Baros reappeared several minutes later but it was not his last taste of physical football during the afternoon.
Palace created the first real chance after an uninspiring opening 10 minutes, Dudek athletically tipping Popovic's header over the crossbar after the Australian connected with Routledge's free-kick.
Both teams battled hard for superiority in midfield but stray passes and crunching tackles, rather than skilled and finesse, were the order of the day until Johnson's brilliant header put Palace in front.
The Eagles striker superbly headed an optimistic long-range volley from Routledge past Dudek.
Baros, battered and bruised, limped off just before the break to be replaced by Darren Potter.
With Liverpool playing their Champions League semi-final first-leg match against Chelsea on Wednesday, it was a disappointing end to a poor half by the visitors.
Morientes, who is ineligible to play against Chelsea, had a weak header saved by Kiraly but his team mustered little else.
Liverpool's afternoon could have got worse immediately after the break, Pellegrino clearing virtually on his goal-line to deny Soares.
Johnson's low cross reached Soares at the far post and the 18-year-old ought to have scored from close range.
Aki Riihilahti then miscued from six yards and Michael Hughes narrowly missed from outside the box.
Morientes climbed superbly again but again his header lacked power and Kiraly collected.
Liverpool substitute Djibril Cisse had a shot saved by Kiraly and Gerrard - back in the Reds line-up - forced a good save with a strike from the edge of the area as Liverpool finally came to life.
Crystal Palace boss Iain Dowie:
"It was a performance full of desire. I knew we could do better than in recent games.
"It was a big, big display for us. We were aware of Liverpool's quality but we really competed well.
"It is very easy to write people off but we have given ourselves a fighting chance now and moved out of the bottom three, which is a nice feeling."
Liverpool manager Rafael Benitez:
"It is a disappointing result but we tried until the end. We tried but sometimes it is not possible.
"We have three more games in the Premiership and at least two in the Champions League.
"We need to pick our heads up and think about the next game. We need to be focused but I have confidence that we can win our next game."
Crystal Palace: Kiraly, Sorondo, Hall, Popovic, Granville, Routledge, Leigertwood, Riihilahti, Hughes, Soares (Watson 90), Johnson.
Subs Not Used: Speroni, Torghelle, Ventola, Lakis.
Booked: Routledge, Granville.
Goals: Johnson 34.
Liverpool: Dudek, Carragher, Hyypia, Pellegrino (Riise 54), Finnan, Welsh, Gerrard, Traore (Cisse 69), Le Tallec, Morientes, Baros (Potter 37).
Subs Not Used: Carson, Biscan.
Booked: Carragher, Morientes, Gerrard, Finnan, Riise.
Ref: D Gallagher (Oxfordshire).