In a chaotic game, the Gunners took the lead on three occasions but were pegged back every time before Declan Rice won it with the last kick of the game.
Mikel Arteta will still likely be frustrated at the manner of the performance, with Arsenal guilty of sloppy errors for all three of Luton's goals.
Gabriel Martinelli lost his man for Luton's opener and David Raya was beaten far too easily for the other two.
Simon Collings was at Kenilworth Road to rate the Arsenal players...
David Raya 4
A shocking night for the Spaniard. Came to claim a corner but was beaten in the air by Elijah Adebayo, then allowed Ross Barkley's shot to squirm under him too easily.
Ben White 7
Back in the side after his recent fitness struggles. Set up Arsenal's second goal with a lovely dinked cross to the back post.
William Saliba 6
Largely solid stuff and not at fault for any of Luton's goals. He and Gabriel had a good battle with Adebayo, who proved a handful.
Like Saliba, he was largely fine and coped with Adebayo. Had a shout for a penalty waved away after he felt he was pulled down in the box.
Jakub Kiwior 6
Handed a rare start at left-back and looked solid enough. Taken off after just over an hour as Arteta turned to Oleksandr Zinchenko for his ability on the ball.
Martin Odegaard 7
Was excellent against Wolves on Saturday, but struggled to have the same influence here. Seemed to be playing very deep. Was bright late on.
Declan Rice 8
Not his usual dominant self and Luton's midfield made it tough for him, with their relentless pressing and physical approach. Popped up with a crucial last-gasp winner.
Back in the starting lineup and in the goals again. Found the net after being played in by a brilliant flick from Jesus. Finally finding his feet.
Bukayo Saka 7
Set up the opening goal with quick thinking from a throw-in. Looked sharp for much of the match, which was his 200th appearance for Arsenal.
Gabriel Jesus 8 | Star player
Put Arsenal ahead with a poacher's finish at the back post. Was involved in a battle all game with Luton's centre-backs, but held his own. Set up Arsenal's third with a lovely assist.
Gabriel Martinelli 7
Opened the scoring to net his first Premier League goal since the start of October. Guilty of poor marking from a corner, though, for Luton's first goal.
Oleksandr Zinchenko (Kiwior 64') 7
Came on to bring some control to the game and looked good going forward.
Leandro Trossard (Martinelli 64') 6
Had a few bright moments, but ballooned one good chance way above the crossbar.
Subs not used: Ramsdale, Cedric, Walters, Jorginho, Elneny, Nelson, Nketiah