Josh Brownhill's 67th minute strike enough to earn a first win in Cardiff for Bristol City since 2002.
And what a strike it was, Brownhill lashed a fierce 25 yard shot that dipped and moved around in the air to beat Neil Etheridge, it was a great goal but it was only one of two efforts on target for the visitors.
Cardiff were ahead in all the other stats apart from the most important one. But don't let that mask a poor show from the Bluebirds. For a second derby in as many weeks City put in a lacklustre performance.
There was some bright spots like shots from Junior Hoilett and Leandro Bacuna that hit the bar and another decent game by Curtin Nelson but overall the performance against an average Bristol City team was disappointing.
Not enough quality up from Omar Bogle, under par effort from NM-L and despite there being three former Bristol City players in the Cardiff line up there din't seem to be any urgency.
City trudge into the international break on a low with a fanbase growing weary as the hopes for a promotion challenge ebb away.
Cardiff City: Etheridge; Peltier, Nelson, Flint, Bennett; Pack, Bacuna; Mendez-Laing, Tomlin (Whyte 75), Hoilett (Paterson 89); Bogle (Madine 83)
Subs: Smithies, Vaulks, Paterson, Whyte, Bamba, Coxe
Bristol City: Bentley; Pereira (Moore 86), Kalas, Williams, Baker, Rowe; Nagy, Brownhill, O’Dowda; Weimann, Watkins (Palmer 63)
Subs: Maenpaa, Semenyo, Eliasson, Lozano, Massengo
Referee: Tony Harrington