Kenny Miller struck promotion-chasing Cardiff City's winner as the Bluebirds plunged Nottingham Forest deeper into Championship relegation zone trouble.
Peter Whittingham underlined the reasons for West Ham United's recent interest by whipping in a cross for Miller to head into the top corner.
Defeat left Forest without a win in seven games as they failed to test visiting goalkeeper David Marshall.
Miller missed two chances before his 59th-minute winner.
But the hosts' goal drought was extended to a club record seven games as the Bluebirds secured a first league win in four matches.
Forest's Paul Anderson failed to recover after hurting his hamstring in the home defeat by Peterborough on Boxing Day.
But defender Joel Lynch banished doubts about his fitness while Cardiff defender Kevin McNaughton could not overcome a calf problem.
The hosts dominated the goal-less opening period in which the visitors' only good chance fell to Millar.
But goalkeeper Lee Camp was equal to the challenge to deny the visitors.
Forest unsettled the Bluebirds at the start of both halves, Marshall earning a booking in the opening minute as he rushed into a challenge on Robbie Findlay.
Within five minutes Findlay had departed with a shoulder injury to be replaced by Matt Derbyshire.
Despite an encouraging start and enjoying the greater share of possession, Forest could not break down a resolute visiting defence.
Miller's goal came against the run of play, although the Bluebirds looked more dangerous in front of goal throughout.
McGugan was Forest's most dangerous player and their best chance fell to him as Forest sought an equaliser.
But the highly-rated midfielder's 30-yard volley beat Marshall, only to scream past the post.
Rudy Gestede, one of the visitors' best performers, had a chance to stretch the Bluebirds' lead late on, but his header also went wide.
Live Text Commentary
Full Time The referee ends the match.90:00 +1:46
Unfair challenge on Andy Reid by Aron Gunnarsson results in a free kick. Lewis McGugan delivers the ball from the free kick left-footed from left channel, save by David Marshall.90:00 +0:41
Joel Lynch has an effort at goal from just outside the penalty box which goes wide of the left-hand post.90:00 +0:05
Andy Reid takes a inswinging corner.86:06
Marcus Tudgay handles the ball and concedes a free kick. David Marshall restarts play with the free kick.85:27
Rudy Gestede handles the ball and concedes a free kick. Luke Chambers restarts play with the free kick.82:40
Guy Moussi concedes a free kick for a foul on Don Cowie. Free kick taken by Mark Hudson.81:09
Free kick taken by Ben Turner.81:09 Substitution
Substitution (Cardiff) makes a substitution, with Craig Conway coming on for Joe Mason.81:09
Free kick awarded for an unfair challenge on Rudy Gestede by Guy Moussi.80:34
Inswinging corner taken from the right by-line by Andy Reid.78:38
Direct free kick taken by Ben Turner.78:38 Substitution
Substitution Jonathan Greening leaves the field to be replaced by Andy Reid.78:38 Substitution
Substitution Patrick Bamford comes on in place of Matt Derbyshire.78:38 Booking
Booking Jonathan Greening goes into the book.78:30
Foul by Jonathan Greening on Peter Whittingham, free kick awarded.75:19
Joel Lynch gives away a free kick for an unfair challenge on Rudy Gestede. Free kick crossed right-footed by Peter Whittingham, Matt Derbyshire makes a clearance.74:15
A cross is delivered by Andrew Taylor, Headed effort from deep inside the area by Rudy Gestede misses to the right of the goal.71:51
Jonathan Greening takes a shot. Inswinging corner taken by Lewis McGugan from the right by-line. Blocked by Mark Hudson.69:52
Lewis McGugan takes a inswinging corner to the near post, clearance made by Mark Hudson.
Corner taken right-footed by Don Cowie, Lee Camp makes a save.67:58
Andrew Taylor produces a cross, Luke Chambers makes a clearance.66:04
Shot from outside the area by Lewis McGugan misses to the left of the goal.65:18
Aron Gunnarsson gives away a free kick for an unfair challenge on Jonathan Greening. Lewis McGugan takes the direct free kick.64:31
Matt Derbyshire concedes a free kick for a foul on Darcy Blake. David Marshall takes the direct free kick.61:56
Unfair challenge on Garath McCleary by Andrew Taylor results in a free kick. Lewis McGugan delivers the ball from the free kick right-footed from right wing, clearance made by Darcy Blake.60:49
Free kick taken by Lewis McGugan.60:49 Booking
Booking Mark Hudson goes into the book for unsporting behaviour.60:24
Mark Hudson concedes a free kick for a foul on Marcus Tudgay.58:12
The assist for the goal came from Peter Whittingham.58:12 Goal scored
Goal! - Kenny Miller - Nott'm For 0 - 1 Cardiff Kenny Miller grabs a headed goal from inside the area. Nottm Forest 0-1 Cardiff.56:30
Kenny Miller produces a right-footed shot from deep inside the penalty area which goes wide of the left-hand post.55:47
Peter Whittingham fouled by Guy Moussi, the ref awards a free kick. The free kick is swung in left-footed by Peter Whittingham, clearance made by Jonathan Greening.54:40
Andrew Taylor concedes a free kick for a foul on Garath McCleary. The free kick is swung in right-footed by Jonathan Greening, Darcy Blake makes a clearance.53:49
Unfair challenge on Marcus Tudgay by Aron Gunnarsson results in a free kick. Lee Camp restarts play with the free kick.51:17
Aron Gunnarsson challenges Lewis McGugan unfairly and gives away a free kick. Greg Cunningham takes the free kick.49:45
Foul by Jonathan Greening on Peter Whittingham, free kick awarded. David Marshall takes the direct free kick.47:51
Corner taken by Jonathan Greening from the right by-line to the near post, Andrew Taylor makes a clearance.47:44
Centre by Chris Gunter, Ben Turner manages to make a clearance.45:01
The referee gets the second half started.45:00 +1:00 Half time
Half Time The first half comes to an end.44:39
Short corner taken by Don Cowie from the right by-line.44:20
Kenny Miller takes a shot. Save by Lee Camp.43:03
Jonathan Greening takes a outswinging corner from the right by-line to the near post, Ben Turner manages to make a clearance.41:47 Booking
Booking Joel Lynch is cautioned.40:09
Unfair challenge on Lewis McGugan by Darcy Blake results in a free kick. Lewis McGugan takes the direct free kick.39:37
Jonathan Greening gives away a free kick for an unfair challenge on Kenny Miller. Ben Turner takes the direct free kick.37:51
Don Cowie sends in a cross, clearance by Joel Lynch.35:25
Outswinging corner taken by Lewis McGugan from the right by-line.34:30
Marcus Tudgay gives away a free kick for an unfair challenge on Ben Turner. Free kick taken by David Marshall.31:09
Garath McCleary sends in a cross.29:36
Free kick awarded for a foul by Jonathan Greening on Aron Gunnarsson. The ball is swung over by Peter Whittingham, Header from close in by Ben Turner misses to the right of the target.28:39
Garath McCleary takes a shot. Save by David Marshall.26:46
Shot from outside the area by Garath McCleary misses to the left of the goal.24:53
A cross is delivered by Chris Gunter, Garath McCleary takes a shot. Save made by David Marshall.23:34
Marcus Tudgay challenges Mark Hudson unfairly and gives away a free kick. Free kick taken by David Marshall.22:38
Corner taken by Jonathan Greening, Lewis McGugan takes a shot. Blocked by Mark Hudson.22:31
Garath McCleary sends in a cross, clearance by Ben Turner.19:21
Ben Turner challenges Marcus Tudgay unfairly and gives away a free kick. Free kick taken by Luke Chambers.18:51
Free kick awarded for an unfair challenge on Rudy Gestede by Marcus Tudgay. Direct free kick taken by David Marshall.18:14
Outswinging corner taken by Jonathan Greening, clearance made by Mark Hudson.16:48
The assistant referee signals for offside against Marcus Tudgay. David Marshall takes the free kick.15:24
Inswinging corner taken right-footed by Jonathan Greening from the left by-line to the near post, clearance made by Mark Hudson.14:50
Foul by Don Cowie on Garath McCleary, free kick awarded. The free kick is swung in right-footed by Jonathan Greening, Rudy Gestede makes a clearance.13:24
Greg Cunningham fouled by Aron Gunnarsson, the ref awards a free kick. Lee Camp takes the free kick.12:23
Aron Gunnarsson concedes a free kick for a foul on Lewis McGugan. Direct free kick taken by Lee Camp.9:52
Jonathan Greening challenges Rudy Gestede unfairly and gives away a free kick. Peter Whittingham restarts play with the free kick.8:34
The ball is sent over by Darcy Blake, clearance by Guy Moussi.7:27
Marcus Tudgay is caught offside. David Marshall restarts play with the free kick.6:33
The referee gives a free kick against Peter Whittingham for handball. Lewis McGugan produces a shot on goal direct from the free kick, Don Cowie manages to make a clearance.4:48
Luke Chambers takes the free kick.4:48 Substitution
Substitution Matt Derbyshire is brought on as a substitute for Robbie Findley.4:48
Chris Gunter fouled by Rudy Gestede, the ref awards a free kick.0:52
Free kick crossed right-footed by Jonathan Greening from right wing, clearance by Ben Turner.0:52 Booking
Booking David Marshall receives a yellow card for unsporting behaviour.0:33
Unfair challenge on Robbie Findley by David Marshall results in a free kick.0:00
The ref blows the whistle to begin the match.
Live data and text provided by our data suppliers