Villa slipped to their first defeat of pre-season on the night when Christian Benteke returned to action.
Jon Shaw and Jake Howells were on target for a clinical Luton side at Kenilworth Road.
All eyes were on Benteke who played 45 minutes in his first game since agreeing a new four-year deal.
The powerhouse striker led the line alongside Graham Burke in an inexperienced Villa starting line-up.
It was the home team that had the better of the early exchanges with Luke Guttridge slicing a left-foot shot wide after reacting quickly to Gary Gardner's stray backpass.
His Hatters team-mate Shaw broke the deadlock on 22 minutes, converting Mark Cullen's clever right-wing cutback from close range.
Benteke found himself in the thick of the action, teeing up Yacouba Sylla for a long-range effort which the former Clermont Foot midfielder struck high and wide of the upright.
The Belgian's first real sight of goal came towards the end of the half when he raced on to Fabian Delph's clever through ball.
Fortunately for the hosts, keeper Mark Tyler came rushing out to smother the ball at Benteke's feet.
Gardner nearly levelled on the stroke of half-time when he whipped a free-kick across goal which whistled just wide of the far post.
A half-time switch saw Benteke - who only reported back for pre-season training on Thursday after being given extra time off - replaced by 18-year-old academy forward Callum Robinson.
The England U19 star went close with a glancing header after a surging run and cross from Janoi Donacien at right-back.
Burke, Gardner and Fabian Delph all went close from long range as Paul Lambert's team pressed for an equaliser.
As with Saturday's friendly against Wycombe, Lambert made 10 changes on the hour mark.
Goalkeeper Brad Guzan was among those to join proceedings - but the American was called into action a little earlier than he would have hoped.
On 73 minutes the American got down well to save a well-struck volley from Shaw.
Then five minutes later Guzan found himself picking the ball out of the net.
Luton sub Jake Howells capitalised on a defensive error and kept his cool to dink a shot over Guzan to make it 2-0.
LUTON: Tyler, Griffiths, Lacey, McNulty, Whalley, Taiwo, Shaw, Cullen, Martin, Guttridge, Henry. Subs: Smith [for Guttridge, 68], O'Donnell [for Cullen, 76], Nunez, Justham, Gray [for Martin, 73], Stevenson [for Taiwo, 68], Howells [for Whalley, 73].
VILLA: Steer, Donacien, Herd, Baker, Webb, Delph, Sylla, Gardner, Carruthers, Burke, Benteke [Robinson, HT]. VILLA [after 60 mins]: Guzan, Lowton, Vlaar, Clark, Bacuna, El Ahmadi, Johnson, Luna, Westwood, Grealish, Robinson.