Palace moved seven points clear of the relegation zone after James Vaughan's goal gave the Eagles a 2-1 win over Barnsley and extend their unbeaten home run to 13 games.
Captain Paddy McCarthy returned to the starting line-up and Dougie Freedman handed a debut to Kemy Agustien as Palace looked to continue their recent good form at Selhurst.
The club's Family Day had provided an exciting start to Saturday's activities, with a packed crowd holding up red cards to support former Eagle Geoff Thomas' 'Football v Blood Cancer' event, but the game itself started slowly.
Fifteen minutes had gone before the first chance when a Nathaniel Clyne cross-shot was spilled by Barnsley keeper Luke Steele. Steffen Iversen reacted quickest to the rebound and found Darren Ambrose whose shot was heading wide but dropped to Neil Danns at the far post, but he couldn't direct the ball goalwards.
Debutant Agustien was impressing with his distribution and a clever chipped ball found James Vaughan in the area, he brought the ball down nicely on his chest but didn't get the connection he would have like and the ball sailed harmlessly over. Minutes later the same combination almost unlocked the Barnsley defence again after Agustien's through-ball but Vaughan's shot drifted narrowly wide.
Palace were on top now with Vaughan hounding Jason Shackell and dispossessing him, the striker cutting inside the box well but a brilliant sliding tackle saw the defender atone for his error, and then a great run down the left from Darren Ambrose ended with a whipped ball that found Vaughan who headed narrowly over.
And then Palace were ahead, Danns picking the ball up after a misplaced pass from Danny Haynes and running at the back four, they backed off and Danns left foot strike found the corner, despite Luke Steele's despairing hand.
Barnsley had threatened in spells with Anthony Gardner and McCarthy both having to be alert and minutes from the interval Palace almost doubled their lead when Gardner did well to break up play and Palace broke well with Iversen and KG linking up. Danns found himself with a little time and space at the back post but opted to take a touch rather than shooting first time and the midfielder was crowded out.
From nothing suddenly the Tykes threatened, first Jacob Butterfield's drive was touched round the post by Speroni and then a long-ball forward from centre-back Shackell found Marlon Harewood who sidefooted home a volley with ease at the back post to make the score 1-1.
In the second half Vaughan almost had Palace ahead immediately but failed to make contact with a diving header but otherwise Barnsley were largely on top for the first fifteen minutes, another Ambrose driving run apart.
The Tykes contined to press without creating anything clear cut and it was Danns who came closest with a long-range drive before the same player found Iversen who dug out a great cross for Vaughan, only to see Steele make a fantastic save from point-blank range.
Then Danns crossed brilliantly for Vaughan again, the striker going down under pressure and the referee pointing to the spot. With regular-taker Ambrose having just been replaced, Vaughan himself stepped up and cooly tucked the penalty into the corner to send Selhurst into raptures.
Danns was suddenly a man inspired, beating three men and the keeper only for the ball to hit the defender on the line and bounce clear with Palace screaming for a second penalty for handball. Barnsley weren't done though and Speroni had to be alert to thwart Martin Devaney from close range late on as the Eagles held on to record their fourth win in five at Selhurst Park.
Crystal Palace: 1. Julian Speroni, 2. Nathaniel Clyne, 5. Patrick McCarthy, 7. Darren Ambrose (Wilfried Zaha '68), 8. Neil Danns (Sean Scannell '82), 9. Steffen Iversen, 20. James Vaughan (Jermaine Easter '87), 29. Dean Moxey, 31. Anthony Gardner, 33. Kemy Agustien, 34. Kagisho Dikgacoi
Subs Not Used: 13. Lewis Price, 4. Claude Davis, 10. Owen Garvan, 32. Pablo Counago
Barnsley: 1. Luke Steele, 2. Bobby Hassell (Diego Arismendi '70), 19. Jacob Butterfield, 4. Jason Shackell, 5. Nathan Doyle, 27. Andy Gray (Garry O'Connor '89), 20. Hugo Colace, 7. Danny Haynes (Martin Devaney '80), 9. Marlon Harewood, 18. Paul McShane, 33. Matt Hill
Subs Not Used: 12. David Preece, 8. Jim O'Brien, 10. Goran Lovre, 3. Jay McEveley
Attendance: 19,344 (312) Ref: Mr K Evans