Scott Hogan hit the frame of the goal twice for Aitor Karanka's side in the first-half but Blues found themselves behind at the break to a Kasey Palmer finish.
The Robins made sure of victory with two further goals following the interval, with Antoine Semenyo and Callum O'Dowda striking at St. Andrew's Trillion Trophy Stadium.
Aitor Karanka made four changes to the side that played a week ago at Barnsley. In came Maxime Colin at right-back, with Ivan Sanchez, Alen Halilović and Jeremie Bela all brought in to form an exciting front three behind Blues number nine Scott Hogan.
The game’s first chance fell to the Robins’ joint top-scorer Famara Diédhiou, but his wayward half-volley found row Z before Blues went significantly closer.
A fine move forward was triggered by a ranging Sanchez pass that set Bela in behind and, eyeing up the bouncing ball, he flashed it across goal. Waiting was Hogan and it took a last-gasp intervention to keep out his effort that rattled the post in a frantic start.
However, after half an hour, the game, despite remaining rather open, was yet to produce any further clear-cut chances. In response, Blues set about changing this and Hogan again struck the woodwork, this time with a header from Bela’s inviting delivery.
Unfortunately, this livened Bristol City and they opened the scoring shortly after through Kasey Palmer. Having dispossessed Rekeeem Harper, the former Chelsea youngster steamed forward and found the corner with 36 minutes played.
Half-time: Blues 0 Bristol City 1
The second-half did not start with as much energy as the first from either side, but it was Blues who had the best of it and Halilović’s mazy run through a number of visiting defenders saw him get a shot off as Karanka’s side signalled their intent.
Although, these efforts to get back into the game were severely dented when the away side doubled their lead. Dealing with an under-hit back pass, Neil Etheridge’s clearance was charged down by Antoine Semenyo and the ball bundled into the open goal.
And the game was put beyond Blues when O’Dowda, who had only just come on, got in behind and finished neatly just inside the final 15 minutes.
This third concession did not halt Blues’ attacking endeavours and both Lukas Jutkiewicz and Jonathan Leko – utilised from the bench - had attempts on goal as the team’s effort did not dwindle.
Bristol City’s second goal came at a time when Blues had seemed more likely to strike and with it tipped the balance comprehensively in their favour.
The result means Blues have collected 35 points from their 36 matches played.
Blues (4-1-4-1): Neil Etheridge, Maxime Colin (Sam Cosgrove 68), Marc Roberts, Harlee Dean (captain), Kristian Pedersen, Rekeem Harper, Ivan Sunjic, Ivan Sanchez (Jonathan Leko 54), Alen Halilović (Gary Gardner 67), Jeremie Bela, Scott Hogan (Lukas Jutkiewicz 67).
Substitutes not used: Andres Prieto, Yan Valery, George Friend, Adam Clayton, Riley McGree.
Booking: Sanchez 45+1, Sunjic 48.
Bristol City (3-4-1-2): Daniel Bentley, Jack Hunt, Famara Diédhiou (Marley Watkins 88), Henri Lansbury (Liam Walsh 81), Antoine Semenyo, Adrian Mariappa, Nahki Wells (Callum O’Dowda 76), Tomas Kalas (captain), Han-Noah Massengo, Steven Sessegnon, Kasey Palmer.
Substitutes not used: Max O’Leary, Taylor Moore, Sam Pearson, Tyreeq Bakinson, Sam Bell, Ryley Towler.
Booking: Wells 50, Lansbury 66.
Referee: Jarred Gillett.
Blues play the second of back-to-back home matches when they welcome Reading to St. Andrew’s Trillion Trophy Stadium on Wednesday night before visiting Watford next Saturday. Both matches are being shown live on Sky Sports Football and Sky Sports Main Event kicking off at 7.45pm and 3pm respectively.