Goals in each half from Clinton Morrison and Mark Hudson saw Palace extend their unbeaten league run to 15 games - their longest sequence since 1969.
In front of Palace's biggest home crowd of the season, Morrison's 13th goal of the season saw a dominant home side go in at half time a goal to the good, before Mark Hudson's header from a trademark Ben Watson free kick killed off Bristol City with five minutes remaining.
On a dull and drizzly afternoon Palace, in sixth, went into the game against the Championship's second-placed club on the back of a 14-game unbeaten run in the league.
Not since 1978 have the Eagles remained undefeated for such a length of time, and Warnock was looking to keep the sequence going with the same 16-man squad that won 3-0 at Wolves last week.
That meant a home debut for on-loan right back John Halls, a final game before the end of his loan spell for Shaun Derry and another start for young attacker Sean Scannell.
Palace started off at a high-tempo and took the lead after six minutes. Scannell's lob was nodded on by James Scowcroft and Morrison battled with visiting defender Jamie McAllister in the 18-yard box. Amid the mayhem, McAllister's attempted clearance rebounded off Morrison's thigh and bounced into the net for an opening goal that the striker knew little about.
Not that Warnock's men were concerned about that. With confidence high, they could have doubled their advantage twice within the next two minutes.
Scowcroft, again at the heart of the action, flicked on for Watson, who could have registered his third goal of the season had he struck first time. But the playmaker hesitated, and eventually placed his shot wide.
Within 30 seconds it was that man Scowcroft who had a shot of his own, an improvised long-range effort that threatened to eclipse the targetman's screamer at Wolves. But the ball flashed just outside of the post.
Palace were playing exactly as their manager would desire: high-tempo and competitive, with Warnock's men first to every ball.
With Morrison in such vintage form, the last thing Warnock would have wanted was to see his top scorer on the floor as he was on 18 minutes. The Republic of Ireland international slumped to the ground after an innocuous challenge but, thankfully, he brushed off a suspected head injury after receiving treatment from Palace physio Nigel Cox.
The physio was again called into action on 30 minutes. On this occasion it was the visiting medic who had to come on and attend to Ivan Sproule after he came off worse from a typically full-blooded clash with Derry.
The break in play did not affect Palace's momentum as, seconds later, Derry's lob was caught up in the swirling wind, allowing Tom Soares to reach the ball ahead of the onrushing away goalkeeper Adriano Basso. But his toe poke landed inches wide of the post.
City's attacking impact during the majority of the first half was negligible. Whenever they got a chance, as Liam Fontaine did after 40 minutes, it was invariably a half-opportunity with half-a-dozen Palace fans in between the ball and the goal. Fontaine's shot flew well over.
That was until the 44th minute when Robins debutant Nick Carle had a clear strike that was parried out by Palace stopper Julian Speroni. Clint Hill reached the rebound which, fortunately for the home side, saw him clear marginally wide of the post.
The half ended with Hill getting a booking for a foul on Lee Johnson that sparked a mini brawl between a few of the two sets of players.
Having no doubt been subject to a word or two from manager Gary Johnson during the interval, City came out with the bit between their teeth.
Michael McIndoe's decent shot missed the target, but Carle's 48th-minute header from Johnson's cross found it. But Speroni leapt to acrobatically keep the ball out.
Warnock, who has so far kept a relatively tight lid on his emotions since he first began his stint in the Palace dugout, felt compelled to protest loudly at the fourth official on 53 minutes following a knock on Matt Lawrence's head by Enoch Showunmi. It was the third time in the afteroon that treatment had to be given for a head injury, but Lawrence returned to his feet and carried on playing.
The game was becoming hugely entertaining with chances at both ends. A sublime moment of skill by Watson, which saw the midfielder take on Showunmi, resulted in a wicked cross that just eluded the Palace men in the box.
Within the blink of an eye, the ball was at the other end of the pitch and McIndoe was through on goal. But the attentions of Halls put him off just enough to disrupt his shot and he lashed over Speroni's goal.
On 57 minutes it was Eagles left back Hill's turn to have a dig with a drive from 22 yards that was held by Basso. Four minutes later Palace should have gone further ahead when Watson seized on a loose ball, went on a solo run and threaded to Morrison, who had time to size up the target, only to slice wide of the goal.
As the second half wore on the tension from the home fans was becoming more and more apparent, so Scannell's retention of the ball after a City corner was cleared was welcome.
The 17-year-old's pass to Soares sparked a breakaway that ended with Watson lobbing one of his many shots over the bar.
On 84 minutes Warnock decided to replace Morrison with Lee Hills to provide some defensive stability but, ironically, Palace doubled their advantage one minute later.
Hill was indirectly responsible, winning a free kick after forcing a trip from Bradley Orr. Watson's set piece eluded Basso, enabling Hudson to head home off the underside of the bar.
The Palace fans erupted amid the realisation that they were on their way to a victory against a fellow promotion contender.
Five minutes of added time could not prevent Palace from climbing to fifth in the table, now four points away from an automatic promotion spot.
Crystal Palace: Speroni, Halls, Hudson, Lawrence, Hill, Soares, Derry, Watson, Morrison (Hills 84), Scowcroft, Scannell (Grabban 89).
Subs not used: Freedman, Fletcher, Moses.
Goals: Morrison (6), Hudson (85)
Booked: Hill (45), Morrison (79).
Bristol City: Basso, Orr, McAllister, Fontaine, McCombe, Carle (Byfield 62), McIndoe, Showunmi (Trundle 74), Elliott, Sproule, Johnson.
Subs not used: Noble, Skuse, Weale.
Booked: Sproule (45+1), Orr (85)
Attendance: 19,010 (Away 2880)
Referee: Mr J. Moss. Assistant Referees: E. Smith, S. Tomlinson. Fourth Official: I. Bentley.

















