Match ends, Cardiff City 0, Derby County 2.
Derby County moved level on points with Championship leaders Bournemouth thanks to victory at Cardiff.
Rams striker Chris Martin had an early penalty saved after Cardiff's Aaron Gunnarsson was judged to have caught him while clearing the ball away.
The visitors then took the lead when City's Scott Malone turned Jamie Ward's low cross into his own net.
Martin doubled Derby's lead in first-half injury time, heading home his 19th goal of the season.
Russell Slade's side have now lost their last four matches in all competitions and are 13th in the table, seven points above the relegation zone.
Derby dominated possession and passed the ball with the authority of a side who had only lost once since mid-December.
After Martin's spot-kick was saved by Simon Moore, Derby continued to push forward and looked to move the ball wide in an attempt to stretch and create gaps in the hosts' defence.
The tactic paid off as Cardiff full-back Malone turned Ward's low cross into his own net from the edge of the six-yard area.
Cardiff struggled to trouble the Derby defence despite the best efforts of the hard-working Alex Revell up front.
He could only direct Cardiff's best chance of the half straight at Rams keeper Lee Grant from the edge of the area.
Deep into first-half injury time Cyrus Christie's cross found Martin at the far post, who rose above Cardiff full-back Lee Peltier to head Derby 2-0 in front.
After the break Cardiff pushed forward in a bid to get back into the match and looked more threatening from set pieces.
The introduction of top scorer Kenwyne Jones nearly paid dividends just minutes after he was introduced as Grant excellently tipped the striker's header over the bar.
Mason Bennett nearly made the game safe for Derby, but Cardiff keeper Moore rushed out to block his shot from six yards out.
At the other end, Jones continued to be a threat as he ran towards goal from midway inside Derby's half. The ball broke to Revell but his shot was blocked thanks to a last-ditch challenge.
Derby manager Steve McClaren:
"It was a professional performance and we won the game in the first half. Missing that penalty would have affected us a year ago, but not now with the maturity of this team. They kept competing and got the two goals.
"I told the players at half-time to take it on and we had opportunities to get the third. But we got sloppy and too casual and should have scored again because anything can happen at 2-0."
Cardiff manager Russell Slade:
"I'm a positive person and I don't think we are getting dragged into a relegation fight.
"We need to stop this trend of losing but I don't see why we can't go and win next week and get some momentum.
"This has been a tricky period as we go through transition with players leaving and coming in, but it's not impossible to make the play-offs."
- 16ConnollyBooked at 72mins
- 22O'KeefeSubstituted forAdeyemiat 80'minutes
- 17GunnarssonBooked at 55minsSubstituted forJonesat 63'minutes
- 40K HarrisSubstituted forda Silvaat 71'minutesBooked at 90mins
- 3da Silva
- 5Ecuele Manga
- 5BuxtonSubstituted forChristieat 41'minutes
- 19HughesBooked at 45mins
- 10WardSubstituted forBrysonat 77'minutes
- 7DawkinsSubstituted forBennettat 58'minutesBooked at 59mins
- Paul Tierney
- Shots on Target
Second Half ends, Cardiff City 0, Derby County 2.
Offside, Cardiff City. Simon Moore tries a through ball, but Fabio is caught offside.
Fabio (Cardiff City) is shown the yellow card.
Omar Mascarell (Derby County) wins a free kick in the attacking half.
Foul by Fabio (Cardiff City).
Attempt saved. Kenwyne Jones (Cardiff City) header from very close range is saved in the centre of the goal. Assisted by Peter Whittingham with a cross.
Foul by Mason Bennett (Derby County).
Lee Peltier (Cardiff City) wins a free kick in the attacking half.
Foul by Cyrus Christie (Derby County).
Craig Noone (Cardiff City) wins a free kick on the left wing.
Omar Mascarell (Derby County) wins a free kick in the defensive half.
Foul by Tom Adeyemi (Cardiff City).
Substitution, Cardiff City. Tom Adeyemi replaces Stuart O'Keefe.
Attempt saved. Alex Revell (Cardiff City) left footed shot from outside the box is saved in the centre of the goal.
Attempt blocked. Peter Whittingham (Cardiff City) left footed shot from outside the box is blocked. Assisted by Fabio.
Substitution, Derby County. Craig Bryson replaces Jamie Ward.
Matthew Connolly (Cardiff City) is shown the yellow card for a bad foul.
Will Hughes (Derby County) wins a free kick in the attacking half.
Foul by Matthew Connolly (Cardiff City).