Two goals from Simon Church in either half and a Jimmy Kebe strike gave Reading an important win at Selhurst Park to lift them out of the relegation zone and above Palace.
Sean Scannell pulled one back for the Eagles, but in the end it proved mere consolation.
In the first half Neil Warnock's men quickly set about trying to make home advantage count with some fluent forward play that deserved reward.
Darren Ambrose was the danger man and he came close on a number of occasions with a series of close efforts.
His first arrived on five minutes when Johnny Ertl deftly knocked down a ball from the right that he controlled with his chest before firing a volley at goal that Adam Federici saved well to his right.
Set up by Nathaniel Clyne two minutes later Ambrose then saw a shot from 20 yards blocked by Brynjar Gunnarsson, while he almost turned provider when he returned a one-two with Nick Carle on the edge of the box.
The Austrlia international received it again on the edge of the box and fired an audacious dipping volley over the bar.
The Palace bombardment continued on 11 minutes when Neil Danns turned expertly in the box but his left footed shot didn't have enough curle on it and Federici gathered comfortably down to his right.
Palace were eventually made to pay for their missed opportunities on 23 minutes when Church met McAnuff's cross on the right.
The Reading striker had ghosted in round the back of the Palace defence where he was able to set himself before firing a volley into the ground and the bounce took it over Speroni and into the top corner.
The goal took the wind out of Palace's sails and they struggled to regain the momentum from earlier in the half, and with it went their chances.
Clyne almost found Ambrose with a cross in from the right but it was just too high for him and Federici claimed unchallenged, while Carle did his best with a half chance on the right side of the box with an improvised over head kick that flashed across the six yard box.
Reading almost made things worse for the Eagles on 41 minutes when Church was set free through the middle. Fortunately though, as he bore down on goal he took a heavy touch that let the ball get away from him and allowed Speroni to come out and clear.
Palace carried on in the early stages of the second half as they had left the first by pushing hard for the equaliser, and again it was Ambrose who provided the threat when he drew a fine save out of Federici from 25 yards.
But as the home side committed men forward Reading took advantage on 47 minutes when Gunnarsson crossed in from the right and Carle could only flick it on to an unmarked Jimmy Kebe to side foot home.
They should have made it three four minutes later when Church managed to get in between Hill and Davis and diverted Andy Griffin's fine cross onto the post.
Palace finally got their reward on 55 minutes with Scannell's first goal of the season. The young winger capitalised on space in the Reading box to head home an Ambrose inswinging corner.
Neil threw Alassane N'Diaye on for his first appearance since January, and he fed Butterfield on 65 minutes to fire a 25 yard shot just over the bar with Federici beaten.
The Royals' keeper was much better placed when N'Diaye was found at the back post from a corner. The Australian had to see through a host of bodies to save at his feet.
Ertl then got in on the action when he hooked an effort into Federici's hands from 15 yards out.
Reading finally hammered home the importance of taking your chances when they got their third of the night ten minutes from time.
A free kick from the right found defender Matthew Mills, who did well to escape both Lee and Butterfield in the box before setting up Church for the simplest of finishes.
Their night was almost capped off in the final minute when Sigurdsson was allowed the space to turn and shoot from the edge of the box, but Speroni was equal to it and made the save.
Crystal Palace: 1. Julian Speroni, 2. Nathaniel Clyne, 3. Clint Hill, 4. Shaun Derry, 7. Darren Ambrose, 8. Neil Danns (14. Sean Scannell, 43), 10. Nick Carle (33. Alassane N'Diaye, 63), 18. Calvin Andrew (19. Alan Lee, 45), 20. Danny Butterfield, 22. Johnny Ertl, 24. Claude Davis
Reading: 1. Adam Federici, 5. Matt Mills, 6. Brynjar Gunnarsson, 11. Jobi McAnuff, 14. Jimmy Kebe, 18. Simon Church, 20. Jem Karacan, 24. Ryan Bertrand, 34. Brian Howard (25. Gylfi Sigurdsson, 77), 40. Andy Griffin, 44. Zurab Khizanishvili
Subs: 4. Kalifa Cisse, 19. Hal Robson-Kanu, 21. Ben Hamer, 23. Grzegorz Raziak, 26. Alex Pearce, 36. Gunnar Thorvaldsson