Lucas Digne scored a dramatic late winner as Aston Villa strengthened their grip on a Champions League place and meant Luton Town's comeback was in vain.
Villa had looked in complete control thanks to Ollie Watkins' first-half double and it seemed as if they would go on to increase their lead.
England striker Watkins headed in from Leon Bailey's corner to give Villa the lead and raced onto Douglas Luiz's ball over the top before slotting in their second.
That one was initially disallowed by the officials for offside but awarded after a video assistant referee (VAR) review.
Luton, who did not have a shot until first-half injury time, looked like a new team after the break.
Tahith Chong gave them hope with a goal after a scramble in the box and Carlton Morris' controlled volley from Alfie Doughty's free-kick levelled the score.
Morris even had a chance to win the game for Luton but his header was straight at Emiliano Martinez.
And Digne made them pay when he headed in a cross from fellow substitute Moussa Diaby.
Fourth-placed Villa are now 11 points above Manchester United in sixth, with fifth place likely to be enough for a Champions League place next season.
Luton remain four points off Nottingham Forest and safety.
Relive the action and reaction hereHow did you rate Luton's performance? Have your say hereWhat did you make of Aston Villa's display? Send us your views hereWatkins' fine form continues
Watkins may well be the most influential player in the Premier League this season. The 28-year-old is the only player to be in double figures for goals and assists in England's top flight.
His double at Kenilworth Road takes him up to 16 Premier League goals, the best seasonal tally of his career, and only behind Manchester City phenomenon Erling Haaland.
Villa had already squandered several chances when Watkins somehow found space in the box to nod in Bailey's corner.
The pair have combined for seven Premier League goals this season, more than any other duo.
Watkins' second came from another set-piece. Luiz took a quick free-kick from the halfway line over the top which Watkins controlled expertly before slotting in via the inside of the post.
A decision of offside was initially given but a VAR review found Chiedozie Ogbene had kept Watkins onside - so his seventh league goal of 2024 stood.
He now becomes only the fourth player to score 16 goals in a Premier League season for Villa after Christian Benteke, Dwight Yorke and Juan Pablo Angel.
Watkins only had one clear chance for a third in the second half when set up by Morgan Rogers, but his weak shot saved.
At that stage Villa were looking comfortable - but they almost squandered the three points before Diaby and Digne, who both came on in a quadruple change after 79 minutes, teamed up to boost their Champions League hopes.
More to follow.
How to play
Rate players out of 10 throughout or after the game. The rater will close 30 minutes after the final whistle.
Rating range key1 = Give it up10 = Pure perfection
Luton Town
Squad number24Player nameKaminski
Squad number16Player nameBurke
Squad number15Player nameMengi
Squad number29Player nameBell
Squad number12Player nameKaboré
Squad number18Player nameClark
Squad number6Player nameBarkley
Squad number45Player nameDoughty
Squad number30Player nameTownsend
Squad number14Player nameChong
Squad number9Player nameMorris
Squad number7Player nameOgbene
Squad number17Player nameMpanzu
Squad number27Player nameHashioka
Aston Villa
Squad number1Player nameE Martínez
Squad number2Player nameCash
Squad number4Player nameKonsa
Squad number17Player nameLenglet
Squad number15Player nameÁlex Moreno
Squad number31Player nameBailey
Squad number7Player nameMcGinn
Squad number6Player nameDouglas Luiz
Squad number41Player nameJ Ramsey
Squad number8Player nameTielemans
Squad number11Player nameWatkins
Squad number12Player nameDigne
Squad number19Player nameDiaby
Squad number22Player nameZaniolo
Squad number27Player nameRogers
Squad number47Player nameIroegbunam
Line-ups
Luton
Formation 3-4-2-1
24Kaminski16BurkeBooked at 38mins15Mengi29BellSubstituted forOgbeneat 6'minutes12Kaboré18Clark6Barkley45Doughty30TownsendSubstituted forHashiokaat 53'minutes14ChongSubstituted forMpanzuat 84'minutes9MorrisSubstitutes
1Shea7Ogbene8Berry10Woodrow17Mpanzu23Krul27Hashioka43Nelson44PiesoldAston Villa
Formation 4-4-2
1E Martínez2Cash4Konsa17Lenglet15MorenoSubstituted forDigneat 79'minutes31BaileyBooked at 45minsSubstituted forDiabyat 79'minutes7McGinn6Douglas LuizBooked at 45mins41J RamseySubstituted forRogersat 29'minutesBooked at 50minsSubstituted forIroegbunamat 79'minutes8TielemansSubstituted forZanioloat 79'minutesBooked at 90mins11WatkinsSubstitutes
12Digne14P Torres16Chambers19Diaby22Zaniolo25Olsen27Rogers29Kesler-Hayden47IroegbunamReferee:Michael Oliver
Attendance:11,594
Live Text
Match ends, Luton Town 2, Aston Villa 3.
Second Half ends, Luton Town 2, Aston Villa 3.
Attempt missed. Teden Mengi (Luton Town) header from the centre of the box is too high. Assisted by Alfie Doughty with a cross following a corner.
Corner, Luton Town. Conceded by Ezri Konsa.
Attempt missed. Ross Barkley (Luton Town) right footed shot from outside the box misses to the left. Assisted by Carlton Morris.
Delay over. They are ready to continue.
Delay in match because of an injury Lucas Digne (Aston Villa).
Nicolò Zaniolo (Aston Villa) is shown the yellow card.
Foul by Lucas Digne (Aston Villa).
Chiedozie Ogbene (Luton Town) wins a free kick in the defensive half.
Goal! Luton Town 2, Aston Villa 3. Lucas Digne (Aston Villa) header from very close range to the bottom left corner. Assisted by Moussa Diaby with a cross.
Douglas Luiz (Aston Villa) wins a free kick in the defensive half.
Foul by Alfie Doughty (Luton Town).
Corner, Luton Town. Conceded by Lucas Digne.
Offside, Luton Town. Carlton Morris is caught offside.
Foul by Tim Iroegbunam (Aston Villa).
Jordan Clark (Luton Town) wins a free kick in the attacking half.
Substitution, Luton Town. Pelly Ruddock Mpanzu replaces Tahith Chong because of an injury.
Delay over. They are ready to continue.
Delay in match because of an injury Tahith Chong (Luton Town).