Fulham returned to winning ways as Chris Baird's late strike ensured Aston Villa's miserable start to the Premier League season continued.
Baird's finish, from John Arne Riise's corner, means Fulham have now taken 32 out of 42 points at Craven Cottage.
Villa, who have mustered only six goals in eight games, remain two points above the relegation zone following their worst top-flight start since 1986.
Substitute Christian Benteke missed toothless Villa's best opportunity.
Scoring goals has been problematic for Villa this season and their lack of cutting edge was painfully obvious yet again.
Villa boss Paul Lambert, who has laughed off talk of a rift with striker Darren Bent, restored the England international to his starting XI in a bid to rectify the problem.
But Bent was starved of service as the visitors, for all their neat and tidy build-up play, lacked penetration in the final third.
"Fulham were not at their fluent best, but they did enough and it was the unlikely source of Chris Baird who won it for the home team in the end. Although they clinched their fourth win of the season, it could have only been a point had Christian Benteke not missed the chance to equalise. But Villa have now lost five times under Paul Lambert."
And they were made to pay the price as their resistance was finally ended six minutes from time by a rare goal from Baird.
The Northern Irish international, fresh from his country's impressive midweek draw in Portugal, marked his 150th Fulham appearance in style to lift his team into eighth place.
However, Villa nearly snatched an equaliser within seconds as Benteke, who netted for Belgium in their midweek World Cup qualifying win against Scotland, smashed a snapshot wide from Charles N'Zogbia's cross.
In contrast to Villa's lack of goalscoring threat Fulham looked dangerous from the off, with Dimitar Berbatov again inspiring the Cottagers following his summer move from Manchester United.
The hosts were quickly into their stride in a high-tempo start and it was Berbatov pulling all the strings.
Villa goalkeeper Brad Guzan had to be alert in the opening stages to parry the Bulgarian's fierce shot from a tight angle, before denying Kieran Richardson from close range with his legs after intricate build-up play involving Berbatov and Sascha Riether.
Guzan continued to be the busiest of the two goalkeepers as Villa failed to stretch Fulham stopper Mark Schwarzer.
But Fulham began to lose their fluency after the half-time break, allowing the visitors to grow in confidence as they gained a foothold in the match.
Agbonlahor could not flick Stephen Ireland's cross goalwards before heading over another right-wing centre from Bent at the far post.
Lambert would have been happier with a point than Fulham counterpart Martin Jol, but the visiting boss was left ruing his luck after Baird scored only the third goal of his Cottagers career.
Fulham's home sweet home
Martin Jol's men have won 10 and drawn two of their 14 matches at Craven Cottage in 2012.
- 2 January: Arsenal (W 2-1)
- 21 January: Blackburn (W 5-2)
- 1 February: West Brom (D 1-1)
- 11 February: Stoke (W 2-1)
- 4 March: Wolves (W 5-0)
- 17 March: Swansea (L 0-3)
- 31 March: Norwich (W 2-1)
- 9 April: Chelsea (D 1-1)
- 21 April: Wigan (W 2-1)
- 6 May: Sunderland (W 2-1)
- 18 August: Norwich (W 5-0)
- 15 September: West Brom (W 3-0)
- 29 September: Man City (L 1-2)
- 20 October: Aston Villa (W 1-0)
And it means Villa are now winless in their last 12 Premier League away matches, spanning nine months, since beating Black Country rivals Wolves in January.
Fulham boss Martin Jol:
"It was a bit of a relief. At the end to score from a corner kick sums it up - scrappy. But we grinded out a result, which is good for us.
"At home I would like to see us dominate and get the goal - that's not what we did today. But I'm happy to get the three points.
"Chris Baird is very good at attacking the near post, he is always close but he hasn't scored for as long as I have known him.
"I was happy to see him score - especially because the corner kick probably was not the best."
Aston Villa manager Paul Lambert:
"I thought some of the football we played was great. I thought we gave as good as we got.
"We came here, where their form has been really good, and gave a good account of ourselves.
"There are a lot of good things. We have to turn the good things into wins. But to concede from a set-piece was disappointing."
Live Text Commentary
Full Time The referee brings the game to a close.90:00 +2:15
Eric Lichaj takes a shot. Save made by Mark Schwarzer.90:00 +1:58
Inswinging corner taken left-footed by Charles N'Zogbia from the right by-line, clearance by Brede Hangeland.90:00 +1:21
Brett Holman takes a shot. Brede Hangeland gets a block in.90:00 +1:00
Foul by Dimitar Berbatov on Eric Lichaj, free kick awarded. Free kick taken by Matthew Lowton.87:20
Giorgos Karagounis fouled by Charles N'Zogbia, the ref awards a free kick. Direct free kick taken by John Arne Riise.85:12
Shot by Christian Benteke from deep inside the penalty area misses to the right of the target.83:51
Assist by John Arne Riise.83:51 Goal scored
Goal! - Chris Baird - Fulham 1 - 0 A Villa A goal is scored by Chris Baird from inside the six-yard box low into the middle of the goal. Fulham 1-0 Aston Villa.83:21
Corner taken left-footed by John Arne Riise from the right by-line to the near post,83:21 Substitution
Substitution Giorgos Karagounis replaces Steve Sidwell.82:58
Ashkan Dejagah takes a shot. Save by Bradley Guzan.81:21
Sascha Riether takes a short corner.80:19
The referee gives a free kick against Christian Benteke for handball. Mahamadou Diarra restarts play with the free kick.79:15
Fabian Delph takes a shot. Aaron Hughes gets a block in.77:16
Dimitar Berbatov is caught offside. Bradley Guzan takes the free kick. Eric Lichaj challenges Hugo Rodallega unfairly and gives away a free kick. Direct free kick taken by Chris Baird.76:47
John Arne Riise restarts play with the free kick.76:47 Booking
Booking Eric Lichaj goes into the book.76:35
Free kick awarded for an unfair challenge on Mahamadou Diarra by Eric Lichaj.75:47
Corner taken left-footed by Charles N'Zogbia from the right by-line to the near post, Dimitar Berbatov manages to make a clearance.
Unfair challenge on Aaron Hughes by Christian Benteke results in a free kick. Chris Baird takes the direct free kick.74:05
Free kick taken by Bradley Guzan.74:05 Substitution
Substitution Christian Benteke is brought on as a substitute for Darren Bent.74:05
Steve Sidwell gives away a free kick for an unfair challenge on Karim El Ahmadi.73:36
Hugo Rodallega takes a shot. Eric Lichaj gets a block in.72:42
Unfair challenge on Sascha Riether by Gabriel Agbonlahor results in a free kick. Aaron Hughes takes the free kick.71:25
John Arne Riise takes a inswinging corner from the right by-line played to the near post, clearance by Darren Bent.69:33
John Arne Riise takes the direct free kick.69:33 Substitution
Substitution Ashkan Dejagah comes on in place of Kieran Richardson.69:33 Booking
Booking John Arne Riise receives a caution.69:27
Brett Holman is caught offside.68:36
Corner taken by Charles N'Zogbia, clearance made by John Arne Riise.65:55 Substitution
Substitution Stephen Ireland goes off and Charles N'Zogbia comes on.63:31 Substitution
Substitution Mahamadou Diarra replaces Mladen Petric.62:28
Effort on goal by Steve Sidwell from outside the penalty box goes harmlessly over the bar.62:03
Kieran Richardson takes a shot. Save by Bradley Guzan.61:30 Substitution
Substitution Eric Lichaj replaces Nathan Baker.56:04
Shot from long range by Steve Sidwell goes wide of the left-hand post.53:40
Gabriel Agbonlahor produces a header from close range which goes wide of the left-hand upright.52:10
Steve Sidwell challenges Stephen Ireland unfairly and gives away a free kick. Direct free kick taken by Stephen Ireland.51:29
Effort from deep inside the area by Dimitar Berbatov misses to the right of the goal.51:16
Fabian Delph gives away a free kick for an unfair challenge on Steve Sidwell. Free kick taken by Chris Baird.49:34
Chris Baird takes the free kick.49:34 Booking
Booking The referee shows Karim El Ahmadi a yellow card for unsporting behaviour.49:19
Free kick awarded for a foul by Karim El Ahmadi on Dimitar Berbatov.45:39
Shot by Hugo Rodallega from deep inside the penalty area misses to the right of the goal.45:01
The game restarts for the second half.45:00 +1:05 Half time
Half Time The ref blows to signal half-time.44:36
Free kick awarded for a foul by Gabriel Agbonlahor on John Arne Riise. Direct free kick taken by John Arne Riise.41:12
Fabian Delph gives away a free kick for an unfair challenge on Mladen Petric. Hugo Rodallega crosses the ball, Header on goal by Steve Sidwell from inside the box goes harmlessly over the target.38:16
Shot from deep inside the area by Dimitar Berbatov clears the crossbar.37:22
Corner taken left-footed by John Arne Riise, Brett Holman makes a clearance.36:42
Mladen Petric takes a shot. Nathan Baker gets a block in.34:49
Steve Sidwell challenges Fabian Delph unfairly and gives away a free kick. Fabian Delph takes the free kick.34:06
The assistant referee signals for offside against Mladen Petric. Ron Vlaar takes the direct free kick.33:21
Free kick awarded for an unfair challenge on Fabian Delph by Steve Sidwell. Karim El Ahmadi restarts play with the free kick.30:45
Brett Holman concedes a free kick for a foul on Hugo Rodallega. Free kick taken by Steve Sidwell.30:05
Corner taken right-footed by Stephen Ireland, save by Mark Schwarzer.29:16
Free kick awarded for an unfair challenge on Matthew Lowton by Kieran Richardson. Matthew Lowton takes the free kick.27:22
Outswinging corner taken left-footed by John Arne Riise from the left by-line, Close range header by Brede Hangeland goes over the crossbar.24:36
Joe Bennett gives away a free kick for an unfair challenge on Dimitar Berbatov. Kieran Richardson takes the free kick.23:32
Shot from outside the box by Brett Holman goes wide right of the target.22:44
Header by Hugo Rodallega from deep inside the penalty area misses to the right of the target.19:55
Headed effort from inside the area by Darren Bent misses to the left of the target.18:22
Corner taken by John Arne Riise, clearance made by Nathan Baker.17:53
Kieran Richardson takes a shot. Blocked by Nathan Baker.17:05
Gabriel Agbonlahor takes a shot. Save by Mark Schwarzer.16:05
Darren Bent is caught offside. Brede Hangeland takes the free kick.14:50
Mladen Petric takes a shot. Save made by Bradley Guzan.12:23
Unfair challenge on Nathan Baker by Mladen Petric results in a free kick. Bradley Guzan restarts play with the free kick.11:50
Close range header by Mladen Petric goes wide of the left-hand post.6:20
Gabriel Agbonlahor has an effort at goal from outside the penalty area which goes wide right of the goal.3:10
Kieran Richardson takes a shot. Bradley Guzan makes a save.0:00
The game gets underway.
Live data and text provided by our data suppliers