The win moves the Spireites up to fifth in the table from ninth, with Port Vale, Bradford, Barnsley and the Iron all dropping.
Former City striker Wayne Allison opened the scoring in the 57th minute with a trademark header and then Shane Nicholson with a free-kick and a well taken penalty completed a good night's work for the home side.
City did well in the first half but fell apart after the break and never looked like finding a way back into the game.
There were few chances at either end in an opening 45 minutes that was full of commitment but short on quality.
Both teams wasted possession and City winger Scott Murray will look back on a missed opportunity in the 41st minute when he took an extra touch instead of shooting at goal.
Chesterfield turned up the heat after the break and it needed a spectacular save from Steve Phillips to keep out a 25-yard drive from Kevan Hurst.
A goalline clearance denied Mark Allott one minute later but Bristol City finally cracked when Allison out-jumped the defenders to head Nicholson's free-kick back across goal and inside City's right-hand post.
City responded by bringing on striker Guy Madjo but two minutes later they fell further behind when Nicholson whipped in a free-kick from the left that evaded everyone and crept into the bottom corner.
That was the end of the game as a contest but Chesterfield completed an impressive night's work with a third goal four minutes from the end.
Allison was pushed by Osei Sankofa and the referee had no hesitation in pointing to the spot.
Nicholson scored only for the referee to order the kick to be retaken but he was just as accurate with his second attempt that wrapped up Chesterfield's sixth win in eight league games.