Mick McCarthy's first victory as Cardiff boss came in a Severnside derby as the Bluebirds dented Bristol City's play-off hopes with a 2-0 Championship success at Ashton Gate.
The visitors took an 18th-minute lead when Harry Wilson's inswinging free-kick from the right was met with a close-range header by the poorly-marked Curtis Nelson.
More poor defending by the Robins allowed Kieffer Moore yards of space to head his 11th goal of the season from Sheyi Ojo's 25th-minute cross, again delivered from the right side of the penalty area.
Cardiff never looked like surrendering their lead, defending strongly as the hosts turned in a totally inept display, failing to create a clear chance.
Bristol City head coach Dean Holden gave debuts in midfield to recent recruit from Aston Villa Henri Lansbury and Joe Williams, on the injured list since signing last September for £1.2 million from Wigan.
Owura Edwards was absent, self-isolating after coming into contact with someone who tested positive for Covid-19. McCarthy made one change, bringing Wilson into the starting line-up in place of Leandro Bacuna, who dropped to the bench.
The visitors suffered an early blow when goalkeeper Alex Smithies signalled for attention as Bristol City prepared to take a free kick. There was no obvious injury, but after lengthy treatment beside his net, Smithies was taken by stretcher to the dressing room and replaced by Dillon Phillips.
The substitute's first save came within seconds as Lansbury's fierce free-kick from 30 yards bounced off his chest and was cleared.
It proved Phillips' only moment of anxiety in a first half controlled by Cardiff, who went close to a third goal when Dan Bentley tipped over Ojo's 40th-minute header.
The hosts' frustration showed with bookings for Lansbury and Alfie Mawson during more than eight minutes of stoppage time before the interval.
Both sides had chances on the break at the start of the second half, but wasted them with a poor final ball. The Robins' appeals for a penalty when Famara Diedhiou went down in the box were waved away.
By the hour mark Holden had seen enough and sent on Kasey Palmer, Jamie Paterson and Taylor Moore for Williams, Han-Noah Massengo and Adrian Mariappa. Soon afterwards Zak Vyner replaced Lansbury.
McCarthy responded by introducing former Bristol City midfielder Marlon Pack for Wilson, with the game having become scrappy.
Although the home side had more of the ball, they could do nothing with it against well-organised opponents and it was Cardiff who continued to look the more dangerous on the break. Moore fired wide in a late attack.
It was Bristol City's third successive defeat and on this evidence their play-off challenge is in danger of petering out.
What the managers said...
Bristol City's Dean Holden: "I am not going to try to sugar-coat that performance. It wasn't good enough and way off the level we have set. I can understand how our supporters will be feeling after a display like that in a derby game and I can assure them there has been some honest talking in the dressing room after the game.
"It would be easy for me to come out and criticise individuals, but we win together and we lose together. My job is to ensure we regroup quickly and galvanise the players to get us out of the tricky spell we are in."
Cardiff's Mick McCarthy: "Alex [Smithies] looked really ill when he came off and to watch him leave on a stretcher was not good. But I have just seen him sitting up in the dressing room and it doesn't look too bad. We have no idea what the problem was. Possibly it is some sort of allergic reaction, but all the lads had the same pre-match meal, so it is hard to know.
"It's a great feeling, not only to have my first victory in charge of Cardiff, but also my first win in the Championship since I was at Ipswich three years ago. The lads had to work really hard for it. If you get early goals, it makes life easier, but we expected Bristol to respond in the second half and did really well to keep a clean sheet."