Gabriel Agbonlahor scored a last-minute winner as Aston Villa took a giant stride towards safety with a win that increases Norwich's relegation fears.
Villa took the lead when Agbonlahor drilled a 25-yard shot into the corner.
Grant Holt drew Norwich level from the penalty spot after Robert Snodgrass had been brought down by Joe Bennett.
But Agbonlahor calmly finished off Ashley Westwood's pass to move Villa five points clear of the drop zone, with Norwich two behind.
Norwich 1-2 Aston Villa: Chris Hughton frustrated with Villa defeat
The goal capped a superb performance from Agbonlahor and a fantastic week for Villa, which began with a 6-1 win over Sunderland.
Manager Paul Lambert, who celebrated passionately at the final whistle at the home of his former club, has overseen a run of five wins in eight games that has taken the team to 40 points.
Norwich are moving in the opposite direction and are now in danger of being overtaken by Wigan, who have 35 points and a game in hand following their 3-2 victory over West Brom.
The club responded to their fourth defeat in six games by cancelling Monday's end-of season dinner to enable "the players and everyone at the the club to devote all their energies" to their remaining games against West Brom and Manchester City.
The first half offered little to animate the crowd as they basked in the May sunshine.
With the teams favouring a cautious approach, goalmouth incident was scarce until the final five minutes when both sides could have taken the lead.
Norwich full-back Javier Garrido's cross from the left bounced up into the path of Holt, who could not direct his header under the bar.
Steve BowerBBC Match of the Day commentator
"They talk about game changers - for Paul Lambert this has been a week-changer. It is a decade since a team went down with 40 points or more and Agbonlahor will be the toast of Aston tonight."
At the other end, Agbonlahor's right-wing cross deflected off Garrido and looped on to the top of the goal frame.
Seconds after the break, Villa striker Christian Benteke cleverly dinked the ball over Ryan Bennett to open the route to goal but shot tamely at Bunn under pressure from Russell Martin.
Norwich responded with a spell of pressure which yielded another presentable chance for Holt. But having been teed up by Jonny Howson on the edge of the area, the striker could only fire his shot high and wide.
The Canaries were made to pay for their wastefulness as Villa snatched the lead with a goal of unerring quality.
Agbonlahor picked up a loose ball on the halfway line, drove into space and unleashed a low shot into the bottom corner.
With the game opening up, Norwich came close to an equaliser when winger Wes Hoolahan headed Garrido's cross wide of the far post.
And moments later, Agbonlahor raced down the left and crossed for Andreas Weimann, who volleyed over the bar at full stretch.
Norwich 1-2 Aston Villa: Lambert delights in performance
Brimming with confidence after scoring his fifth goal in seven games, Agbonlahor then exchanged passes with Benteke before fizzing a shot across the face of goal.
Norwich manager Chris Hughton's decision to take off Hoolahan was greeted by boos but the same fans were cheering shortly afterwards when the hosts won a penalty.
Snodgrass was the instigator as he weaved in from the right and was hauled over by Bennett just inside the box. Holt wrong-footed Brad Guzan from the spot to end a run of eight games without a goal.
Suddenly, Norwich looked the more likely team to win as Holt fired wide after a flick-on from substitute Kei Kamara, who was playing the last game of his loan spell from Sporting Kansas City.
But Villa remained dangerous on the break and snatched the points when Westwood weighted a perfect through-ball to Agbonlahor, who slotted his finish across Mark Bunn.
There was still time for Norwich to craft another opening when Holt beat Guzan to Kamara's cross, only to head wide of the target.
Villa have gone 20 league games without a clean sheet, the longest run of the season.
Norwich have conceded more goals from outside the area than any other team in the Premier League this season (13).
Norwich City manager Chris Hughton:
"I'm annoyed and frustrated because there was no way we should have lost or deserved to lose. We were the better side over 90 minutes but Villa have pace on the counter-attack and we have conceded two poor goals today.
"Joe Bennett shouldn't have been on the park - he was on a yellow card when he conceded the penalty and had two or three fouls after that. I find it incredible that he was still on the park.
"Next week's game against West Brom becomes a bigger game. We will need a better performance but we can't concede the goals we conceded today and expect to win football matches."
Aston Villa manager Paul Lambert:
"Our effort after playing on Monday night was outstanding. All credit to the team. We hung on and in the second half it could have been more.
"Gabby Agbonlahor has been playing excellently for us, he has the speed to hurt teams and power as well.
"We have to keep going but it's another huge, huge win. I knew how much effort we put into that game and some of the football was excellent at times."
Full Time The referee blows his whistle to end the game.
Gabriel Agbonlahor decides to take a short corner. Christian Benteke fouled by Jonathan Howson, the ref awards a free kick. Free kick taken by Gabriel Agbonlahor.
90:00 +4:19 Booking
Booking The referee books Ryan Bennett for dissent.
The ball is sent over by Kei Kamara, Headed effort from inside the area by Grant Holt misses to the left of the target.
90:00 +1:55 Substitution
Substitution Javier Garrido leaves the field to be replaced by Simeon Jackson.
Ashley Westwood provided the assist for the goal.
88:54 Goal scored
Goal! - Gabriel Agbonlahor - Norwich 1 - 2 A Villa A goal is scored by Gabriel Agbonlahor from inside the penalty area to the bottom left corner of the goal. Norwich 1-2 Aston Villa.
Effort from deep inside the area by Grant Holt misses to the right of the goal.
Free kick awarded for a foul by Ashley Westwood on Bradley Johnson. Direct free kick taken by Javier Garrido.
Substitution Elliott Bennett replaces Robert Snodgrass.
Robert Snodgrass fouled by Andreas Weimann, the ref awards a free kick. Free kick taken by Russell Martin.
The ball is sent over by Grant Holt, save by Bradley Guzan.
The ball is crossed by Andreas Weimann, Ryan Bennett makes a clearance.
Foul by Robert Snodgrass on Joe Bennett, free kick awarded. Free kick crossed by Ashley Westwood, Sebastien Bassong manages to make a clearance.
Direct free kick taken by Bradley Guzan.
Substitution Brett Holman comes on in place of Yacouba Sylla.
Eric Lichaj fouled by Kei Kamara, the ref awards a free kick.
The ball is swung over by Robert Snodgrass, clearance by Ashley Westwood.
Russell Martin gives away a free kick for an unfair challenge on Joe Bennett. Joe Bennett delivers the ball from the free kick left-footed from left channel, Ryan Bennett manages to make a clearance.
Shot from 6 yards by Robert Snodgrass. Nathan Baker gets a block in.
Assist on the goal came from Robert Snodgrass.
73:27 Goal scored
Goal! - Grant Holt - Norwich 1 - 1 A Villa Grant Holt scores a power penalty. Norwich 1-1 Aston Villa.
Joe Bennett challenges Robert Snodgrass unfairly and gives away a Penalty.
The ball is swung over by Sebastien Bassong, clearance made by Joe Bennett. Corner taken left-footed by Robert Snodgrass from the right by-line, clearance made by Ron Vlaar.
Substitution Kei Kamara on for Wes Hoolahan.
The ball is delivered by Wes Hoolahan.
Free kick taken by Nathan Baker.
Booking Christian Benteke is booked.
Sebastien Bassong gives away a free kick for an unfair challenge on Christian Benteke.
Gabriel Agbonlahor has an effort at goal from close range which goes wide right of the target.
Centre by Anthony Pilkington.
Joe Bennett gives away a free kick for an unfair challenge on Robert Snodgrass. The free kick is delivered right-footed by Robert Snodgrass from right channel, save made by Bradley Guzan.
Fabian Delph produces a right-footed shot from just outside the box that misses to the right of the target.
Centre by Robert Snodgrass.
The ball is sent over by Gabriel Agbonlahor, Andreas Weimann takes a shot from close range clearing the crossbar.
Corner from the right by-line taken by Robert Snodgrass, comfortable save by Bradley Guzan.
The ball is sent over by Russell Martin, clearance by Gabriel Agbonlahor.
The ball is swung over by Javier Garrido, Header from close in by Wes Hoolahan misses to the right of the target.
Andreas Weimann gives away a free kick for an unfair challenge on Bradley Johnson. Jonathan Howson takes the free kick.
Free kick crossed by Ashley Westwood, save by Mark Bunn.
Booking The referee cautions Bradley Johnson for unsporting behaviour.
Gabriel Agbonlahor fouled by Bradley Johnson, the ref awards a free kick.
Gabriel Agbonlahor fouled by Bradley Johnson, the ref awards a free kick. Joe Bennett crosses the ball from the free kick left-footed from left channel, save by Mark Bunn.
Corner taken by Robert Snodgrass from the left by-line played to the near post, Eric Lichaj makes a clearance.
Ashley Westwood provided the assist for the goal.
54:38 Goal scored
Goal! - Gabriel Agbonlahor - Norwich 0 - 1 A Villa Gabriel Agbonlahor grabs a goal from outside the area to the bottom left corner of the goal. Norwich 0-1 Aston Villa.
Mark Bunn takes the direct free kick.
Booking Fabian Delph goes into the book.
Robert Snodgrass fouled by Fabian Delph, the ref awards a free kick.
Robert Snodgrass sends in a cross, Grant Holt produces a right-footed shot from just outside the box that goes wide right of the target.
Inswinging corner taken from the left by-line by Ashley Westwood, Ryan Bennett manages to make a clearance.
Foul by Wes Hoolahan on Yacouba Sylla, free kick awarded. The free kick is delivered right-footed by Ashley Westwood from left channel, Grant Holt makes a clearance.
The ball is crossed by Anthony Pilkington, Bradley Guzan makes a comfortable save.
Robert Snodgrass delivers the ball, Eric Lichaj manages to make a clearance.
Grant Holt fouled by Nathan Baker, the ref awards a free kick. Robert Snodgrass crosses the ball from the free kick left-footed from right channel, clearance by Joe Bennett.
Effort from long distance by Christian Benteke goes wide right of the goal.
Eric Lichaj concedes a free kick for a foul on Javier Garrido. Free kick taken by Javier Garrido.
Shot by Christian Benteke. Save by Mark Bunn.
The game restarts for the second half.
45:00 +1:16 Half time
Half Time The players leave the pitch at half time.
Shot by Ron Vlaar. Blocked by Sebastien Bassong. Shot by Gabriel Agbonlahor. Blocked by Joe Bennett.
Gabriel Agbonlahor crosses the ball, clearance made by Javier Garrido. Inswinging corner taken right-footed by Ashley Westwood from the left by-line, Robert Snodgrass makes a clearance.
Wes Hoolahan is adjudged to have handled the ball. Ron Vlaar takes the free kick.
Grant Holt is ruled offside. Bradley Guzan restarts play with the free kick.
Javier Garrido crosses the ball, Header from deep inside the area by Grant Holt goes over the bar.
Free kick awarded for an unfair challenge on Yacouba Sylla by Javier Garrido. Ron Vlaar takes the direct free kick.
The ball is sent over by Anthony Pilkington, brilliant save by Bradley Guzan.
Unfair challenge on Christian Benteke by Russell Martin results in a free kick. Joe Bennett takes the free kick.
Andreas Weimann produces a cross, save made by Mark Bunn.
Robert Snodgrass takes a shot. Save by Bradley Guzan.
Free kick awarded for a foul by Joe Bennett on Robert Snodgrass. Direct effort from the free kick comes in from Robert Snodgrass, Yacouba Sylla gets a block in.
Centre by Wes Hoolahan, Ashley Westwood manages to make a clearance.
Shot from outside the area by Fabian Delph misses to the left of the goal.
The official flags Robert Snodgrass offside. Bradley Guzan restarts play with the free kick.
Robert Snodgrass decides to take the corner short.
Corner from the right by-line taken by Ashley Westwood, Ryan Bennett manages to make a clearance.
Substitution Eric Lichaj joins the action as a substitute, replacing Matthew Lowton.
Christian Benteke gives away a free kick for an unfair challenge on Russell Martin. Russell Martin takes the direct free kick.
The assistant referee signals for offside against Gabriel Agbonlahor. Free kick taken by Mark Bunn.
Grant Holt fouled by Joe Bennett, the ref awards a free kick. The ball is sent over by Robert Snodgrass, Ryan Bennett takes a shot. Save by Bradley Guzan.
The ball is swung over by Wes Hoolahan, clearance made by Joe Bennett.
Free kick awarded for an unfair challenge on Yacouba Sylla by Bradley Johnson. Bradley Guzan restarts play with the free kick.
The ball is swung over by Wes Hoolahan, Joe Bennett makes a clearance.
Russell Martin takes the free kick.
Booking Joe Bennett goes into the referee's book.
Unfair challenge on Wes Hoolahan by Joe Bennett results in a free kick.
Free kick awarded for an unfair challenge on Nathan Baker by Grant Holt. Bradley Guzan takes the free kick.
Andreas Weimann produces a drilled left-footed shot from 20 yards. Save by Mark Bunn.
Centre by Anthony Pilkington, free kick awarded for a foul by Robert Snodgrass on Joe Bennett. Bradley Guzan takes the direct free kick.
Centre by Anthony Pilkington, clearance made by Matthew Lowton.
Drilled right-footed shot by Gabriel Agbonlahor. Blocked by Sebastien Bassong. Outswinging corner taken right-footed by Ashley Westwood, Robert Snodgrass manages to make a clearance.
The ball is delivered by Robert Snodgrass.
Inswinging corner taken by Robert Snodgrass from the right by-line, save made by Bradley Guzan.
The ball is crossed by Wes Hoolahan, clearance by Joe Bennett.
Anthony Pilkington produces a cross, save made by Bradley Guzan.
Christian Benteke challenges Sebastien Bassong unfairly and gives away a free kick. Mark Bunn takes the direct free kick.
Robert Snodgrass crosses the ball, clearance made by Matthew Lowton. Outswinging corner taken from the left by-line by Robert Snodgrass, Foul by Sebastien Bassong on Christian Benteke, free kick awarded. Free kick taken by Bradley Guzan.
Nathan Baker fouled by Robert Snodgrass, the ref awards a free kick. Ron Vlaar takes the direct 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.