A clinical strike from Pablo Counago saw Palace record their third home win in a row.
The Spaniard's second goal of the season gave the Eagles a half-time lead and despite Doncaster's late rally the home side held on for three huge points.
Palace came into the game on the back of two successive home wins and they started brightly, winning two corners in the first two minutes but the visitors fought back well as the half continued with both teams looking to get the ball down and play.
From a good passing move Counago and Vaughan linked well with the latter almost making the most of a clever one-two. At the other end, a lovely ball from James Coppinger found James Hayter whose volley almost took the ball over Speroni. Hayter nearly took another chance soon after but his header flashed just wide.
The visitors were looking bright going forward but a series of good defensive clearances from Claude Davis and Anthony Gardner meant that Julian Speroni was relatively untroubled throughout the first twenty minutes.
A great jinking run from Wilfried Zaha then saw the forward create a good chance for himself, cutting in from the left and beating two men but his shot was too close to Sullivan who saved easily. Minutes later, a wonderful ball in from Darren Ambrose found Neil Danns but his low volley on the run was well saved by Neil Sullivan and Zaha's follow-up was easily blocked.
More good play from James Coppinger nearly found Hayter again but Anthony Gardner recovered brilliantly with a sliding challenge. David Healy's bicycle kick from outside the area then almost caught out Speroni but the 'keeper did well to tip the ball round the post.
Following another Rovers attack, Neil Danns broke quickly, Danns fed Counago who was inches away from finding James Vaughan's clever run.
Palace continued to get the ball down and on 35 minutes a wonderful passing move involving Danns, Clyne, Ambrose and Counago ended with the Spaniard beating Sullivan at his near-post.
The Eagles had the lead but Doncaster began to edge their way back into the game.
The visitors then had the ball in the net on 38 minutes, when a lovely chipped through-ball found the excellent Coppinger who finished well, but the flag was already up for offside.
Rovers started the second-half much the better and some great football opened Palace up but Coppinger could only shoot straight at Speroni.
The hugely impressive Pablo Counago then put James Vaughan clean through on Neil Sullivan with a wonderfully weighted pass but the young forward's shot was too close to the veteran goal-keeper.
For what seemed like the umpteenth time Counago won the ball back in midfield and his ingenious chip was very well reached by a back-pedaling Sullivan. Palace continued to look the better side and on 63 minutes Wilfried Zaha cut inside after battling work down the left and fired against the post from a narrow angle.
Rattled, Doncaster responded brilliantly and put Palace under huge pressure. First Speroni tipped over well from a David Healy snap-shot and then again from Brian Stock's long-range strike.
They continued to press for the equaliser and Billy Sharp brought another good save from the Palace 'keeper at his near post. A scramble in the box near the end nearly saw a late equaliser but the Eagles held-out for three much needed points.
Crystal Palace Speroni, Clyne, Davis, Gardner, Wright, Ambrose (N'Diaye '80) , Danns, Marrow (Dorman '14), Zaha, Counago, Vaughan (Obika '84)
Subs Not Used: Price, Barrett, Djilali, O'Keefe,
Doncaster Sullivan, O'Connor, Martis, Thomas (Brooker '86), Stock, Hayter, Wilson (Sharp '66), Oster (Shiels '80), Healy, Dumbuya, Coppinger
Subs Not Used: Lockwood, Hird, Sousa, Woods
Bookings: Stock, O'Connor
Att: 12,470 (579) Match Referee: Andy D'Urso