Andreas Weimann's first Premier League goal earned Aston Villa a last-gasp winner against in-form Fulham and ended the home side's poor run at Villa Park.
Villa had dominated the first half with Gabriel Agbonlahor going closest.
Marc Albrighton struck the bar for the hosts early in the second period, then Damien Duff hit a post for Fulham.
Villa won it in injury time when Fulham keeper Mark Schwarzer failed to hold a Gary Gardner shot and the Austrian bundled the follow-up over the line.
Weimann winner delights Aston Villa boss McLeish
The Villa crowd had been growing frustrated before that moment of relief as their team looked on course for an eighth game without a win at Villa Park, which would have been their longest barren spell in 91 years.
There were some boos when Charles N'Zogbia was taken off with 19 minutes to play, so manager Alex McLeish will have been delighted that the man he brought on scored the winner.
Fans' frustrations have been affecting performances
according to forward Agbonlahor, but they were ecstatic at full-time as their side finally made the breakthrough having probed for long periods without showing a cutting edge though Schwarzer should have done better than push the ball straight back to Weimann.
The result for Villa was all the more impressive considering the run that Fulham had been on. They had taken 16 points from the last eight games and came into this match on the back of a
5-0 win over Wolves
thanks to a Pavel Pogrebnyak hat-trick.
Steve BowerBBC Match of the Day commentator
"Alex McLeish's side had far more opportunities and had been in far more promising situations in the first half but failed to finish them off. You could sense anxiety around Villa Park. Not everyone agreed with the substitution of Charles N'Zogbia after 70 minutes. It was a relief for McLeish when Andreas Weimann scored."
The Cottagers had won three games in a row, with Pogrebnyak's five goals in his first three matches in England being a key factor, but he was quiet as the visitors looked below their best despite improving in the second period.
Recent form had no bearing on the early stages, however, as out-of-form Villa dominated. They appeared full of confidence, with Stiliyan Petrov shooting from distance repeatedly in the early stages.
Albrighton set up N'Zogbia, who shot wide from 15 yards, then had a chance himself but headed straight at Schwarzer.
Fulham could not keep hold of possession and, when captain Danny Murphy gave the ball away sloppily, Agbonlahor charged through and forced a good save from the Australian keeper.
Next it was James Collins' turn to miss a chance, shooting wide from eight yards. It was typical Villa of recent times - failing to turn pressure into goals.
Martin Jol says Fulham 'bossed' Villa despite defeat
Fulham's Murphy was angered when blood started pouring down his face after he was struck accidentally by Stephen Ireland. But the rest of the first half was low key.
Duff single-handedly enlivened the visitors after the break, firing in a series of teasing crosses.
Both teams were getting closer and the woodwork was struck at either end. Albrighton was first to do so, rattling the bar from 16 yards after Ireland's cut-back from the right. Duff then hit the near post from 10 yards after being played in by John Arne Riise.
The game looked to be fizzling out in the latter stages until Gardner - who had come on seconds earlier - took a long-range shot, which led to Weimann pinching the points in dramatic fashion.
Aston Villa manager Alex McLeish:
"The dug-out can be a very tense place to be. The fans' expectations are massive. The more you lose and don't win, the fans are going to get on your back.
"I ran past the visiting dug-out when we scored. I didn't mean any offence to Martin Jol. It was just a reaction, more of relief than anything else.
"We had a good feeling about Weimann. I said to my coaches beforehand that we had to get him into the game."
Fulham manager Martin Jol:
"We wanted a victory. I feel bad. Nil-nil would have been a good result but we could have nicked it.
"We should have scored a goal but we didn't. One or two mistakes can cost you and that's what happened."
Goal! - Andreas Weimann - A Villa 1 - 0 Fulham Andreas Weimann finds the net with a goal from close in to the bottom right corner of the goal. Aston Villa 1-0 Fulham.
Gary Gardner takes a shot. Save by Mark Schwarzer. Andreas Weimann takes a shot. Mark Schwarzer makes a save.
The ball is delivered by Alan Hutton, clearance by Stephen Kelly.
Alan Hutton crosses the ball, Mahamadou Diarra makes a clearance.
Barry Bannan crosses the ball, Brede Hangeland manages to make a clearance.
The ball is crossed by Carlos Cuellar.
Substitution (Aston Villa) makes a substitution, with Gary Gardner coming on for Stiliyan Petrov.
Corner taken left-footed by Bryan Ruiz, Unfair challenge on James Collins by Philippe Senderos results in a free kick. Free kick taken by Shay Given.
Marc Albrighton sends in a cross, Carlos Cuellar has an effort at goal from deep inside the area missing to the right of the target.
Inswinging corner taken by Barry Bannan.
The ball is crossed by Marc Albrighton, John Arne Riise manages to make a clearance.
The ball is crossed by Marc Albrighton.
Free kick awarded for a foul by Moussa Dembele on Gabriel Agbonlahor. The free kick is swung in right-footed by Stiliyan Petrov.
Clint Dempsey produces a right-footed shot from long range which goes wide right of the goal.
John Arne Riise takes the free kick.
Substitution Barry Bannan comes on in place of Chris Herd.
Free kick awarded for a foul by Marc Albrighton on Damien Duff.
Outswinging corner taken by Marc Albrighton from the right by-line, Pavel Pogrebnyak manages to make a clearance.
Marc Albrighton sends in a cross, Brede Hangeland makes a clearance.
John Arne Riise has an effort at goal from outside the area which goes wide right of the goal.
Stephen Warnock crosses the ball.
Direct free kick taken by Mahamadou Diarra.
Booking Booking for Chris Herd for unsporting behaviour.
Free kick awarded for a foul by Chris Herd on Mahamadou Diarra.
The ball is sent over by Marc Albrighton, Andreas Weimann produces a right-footed shot from close range which goes wide of the left-hand post.
Corner from left by-line taken by Stiliyan Petrov.
Strike comes in from Stiliyan Petrov from the free kick, blocked by Stephen Kelly.
Substitution Andreas Weimann joins the action as a substitute, replacing Charles N'Zogbia.
Stephen Kelly gives away a free kick for an unfair challenge on Charles N'Zogbia.
Damien Duff has an effort at goal from inside the penalty area that bounces off the post.
A cross is delivered by Damien Duff, clearance made by Alan Hutton.
Corner taken short by Damien Duff.
The ball is delivered by John Arne Riise, blocked by Marc Albrighton.
Stiliyan Petrov produces a right-footed shot from just outside the penalty box that misses to the left of the goal.
Substitution Andrew Johnson leaves the field to be replaced by Bryan Ruiz.
Direct free kick taken by John Arne Riise.
Booking Stiliyan Petrov is shown a yellow card.
Stiliyan Petrov concedes a free kick for a foul on Moussa Dembele.
The ball is swung over by Alan Hutton, clearance by Brede Hangeland.
Marc Albrighton takes a shot.
Andrew Johnson is caught offside. Free kick taken by Alan Hutton.
A cross is delivered by Stiliyan Petrov, save by Mark Schwarzer.
Outswinging corner taken left-footed by Damien Duff from the left by-line, clearance by James Collins.
Damien Duff sends in a cross, Alan Hutton manages to make a clearance.
Chris Herd challenges Moussa Dembele unfairly and gives away a free kick. Mahamadou Diarra takes the direct free kick.
Inswinging corner taken left-footed by Damien Duff from the right by-line.
Damien Duff crosses the ball, blocked by Carlos Cuellar.
Pavel Pogrebnyak challenges Chris Herd unfairly and gives away a free kick. Carlos Cuellar restarts play with the free kick.
Centre by Damien Duff.
The ball is crossed by Stephen Ireland, Mark Schwarzer makes a save.
Free kick awarded for a foul by Chris Herd on Moussa Dembele. Free kick crossed by John Arne Riise.
The official flags Gabriel Agbonlahor offside. Brede Hangeland takes the free kick.
The second half begins.
Substitution Mahamadou Diarra on for Danny Murphy.
45:00 +2:02 Half time
Half Time The players leave the pitch at half time.
Pavel Pogrebnyak fouled by James Collins, the ref awards a free kick. Danny Murphy takes the direct free kick. Shot by Andrew Johnson from deep inside the penalty area misses to the right of the target.
Free kick awarded for a foul by Stiliyan Petrov on Pavel Pogrebnyak. Free kick taken by Danny Murphy.
Free kick awarded for a foul by Carlos Cuellar on Moussa Dembele. Brede Hangeland restarts play with the free kick.
Corner from the left by-line taken by Marc Albrighton, save by Mark Schwarzer.
Marc Albrighton takes a shot. Brede Hangeland gets a block in.
Foul by Danny Murphy on Charles N'Zogbia, free kick awarded. Stephen Warnock takes the free kick.
Pavel Pogrebnyak gives away a free kick for an unfair challenge on Carlos Cuellar. Carlos Cuellar takes the direct free kick.
The ball is delivered by Gabriel Agbonlahor.
Stephen Ireland is ruled offside. Free kick taken by Mark Schwarzer.
Inswinging corner taken from the left by-line by Marc Albrighton, save by Mark Schwarzer.
Stephen Ireland delivers the ball.
Andrew Johnson takes a shot. Shay Given makes a save.
Unfair challenge on Pavel Pogrebnyak by Stiliyan Petrov results in a free kick. Philippe Senderos takes the direct free kick.
The ball is crossed by Stephen Warnock, blocked by Damien Duff.
Pavel Pogrebnyak gives away a free kick for an unfair challenge on James Collins. Carlos Cuellar restarts play with the free kick.
The assistant referee signals for offside against Pavel Pogrebnyak. James Collins restarts play with the free kick.
Charles N'Zogbia fouled by Philippe Senderos, the ref awards a free kick. Stiliyan Petrov restarts play with the free kick. Stiliyan Petrov produces a right-footed shot from outside the penalty box and misses wide left of the target.
Marc Albrighton produces a left-footed shot from just outside the penalty box that misses to the left of the goal.
Charles N'Zogbia delivers the ball, clearance by Philippe Senderos.
The assistant referee signals for offside against Pavel Pogrebnyak. Free kick taken by James Collins.
Corner taken right-footed by Marc Albrighton. Shot by James Collins from deep inside the penalty area misses to the left of the target.
The ball is crossed by Marc Albrighton, John Arne Riise gets a block in.
The ball is sent over by Marc Albrighton, clearance by Stephen Kelly.
Gabriel Agbonlahor takes a shot. Save made by Mark Schwarzer.
James Collins has an effort at goal from deep inside the area missing to the right of the target.
Inswinging corner taken by Charles N'Zogbia from the right by-line played to the near post, save by Mark Schwarzer.
Shot from 35 yards by Stiliyan Petrov went wide right of the net.
Inswinging corner taken from the left by-line by Marc Albrighton.
Carlos Cuellar produces a cross, clearance made by Danny Murphy.
Andrew Johnson gives away a free kick for an unfair challenge on Stiliyan Petrov. The free kick is swung in right-footed by Stephen Ireland, clearance by Pavel Pogrebnyak.
The ball is sent over by Gabriel Agbonlahor, Marc Albrighton takes a shot. Save made by Mark Schwarzer.
Stiliyan Petrov takes the chance to get an effort at goal and missed to the right of the net.
Free kick awarded for a foul by Moussa Dembele on Charles N'Zogbia. Free kick crossed left-footed by Stephen Warnock, Brede Hangeland manages to make a clearance.
Andrew Johnson delivers the ball.
Centre by Stephen Warnock, clearance by Moussa Dembele.
Effort from the edge of the box by Charles N'Zogbia goes wide of the left-hand upright.
Stiliyan Petrov takes a shot. Save made by Mark Schwarzer.
Marc Albrighton produces a cross, clearance made by Brede Hangeland.
Corner taken right-footed by Marc Albrighton.
The ball is swung over by Marc Albrighton, Philippe Senderos manages to make a clearance.
The ball is sent over by Charles N'Zogbia.
Charles N'Zogbia delivers the ball, Danny Murphy manages to make a clearance.
Charles N'Zogbia takes a inswinging corner.
Unfair challenge on Stephen Warnock by Pavel Pogrebnyak results in a free kick. Carlos Cuellar restarts play with the free kick.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.