Blackburn Rovers threw away a lead for the third game running as Aston Villa claimed three crucial points to move clear from danger.
It looked set to be the tale of two penalties, as Benni McCarthy converted his midway through the first half, before Gareth Barry saw his spot-kick saved just moments after the break.
But Patrik Berger levelled the scores with a clever finish from close range, before providing the decisive through ball for Gabriel Agbonlahor's winner 17 minutes from time.
Before the game, Rovers boss Mark Hughes welcomed back David Bentley from suspension in place of David Dunn, while Martin O'Neill made four changes to the side that drew 1-1 with Everton on Monday night, with Martin Laursen, Craig Gardner, Shaun Maloney and Berger all named in the starting line-up.
In the bright Blackburn sunshine, both sides failed to make any early impression in the opposition's final third. Wilfred Bouma registered the game's first shot on 13 minutes, which was comfortable for Brad Friedel, before Bentley's deflected right-wing shot had to be palmed round his near post by Thomas Sorensen.
But the next attack of the game, on 23 minutes, brought with it the opening goal. Morten Gamst Pedersen tricked his way past Phil Bardsley before being clipped from behind and McCarthy smashed home his 19th of the season from the resultant spot-kick.
The young Villa defender atoned for his mistake ten minutes later however, as the visitors drew level. After a neat passing move, Bardsley cut inside from the right and delivered the perfect cross for the unmarked Berger to flick the ball into the back of the net.
After finding himself in space on the right, Barry fired straight at Friedel a minute later and the two would do battle once again just minutes after the break.
Barry's attempted flick over Ryan Nelsen right on the edge of the box struck the Rovers captain on the arm, but from the resulting penalty Friedel brilliantly kept out the Villa captain's fierce drive down the centre of the goal.
From one Villa corner, Rovers broke quickly and the galloping Stephen Warnock almost caught Sorensen off his line and from the next Villa corner, Friedel again denied Barry, who had glanced the ball goalwards from the near post.
Rovers made a double substitution with Jason Roberts and Dunn brought on as an added attacking threat, but it was Dunn's misplaced pass on 73 minutes that allowed Berger to rob Brett Emerton of the ball and the former Czech Republic international freed Agbonlahor through the centre, who rounded Friedel to score.
As the full-time whistle approached, substitute Shabani Nonda directed a free header straight into the arms of Sorensen from just six yards out, before Bentley's free-kick deep into time added came crashing back off the bar.