The visitors missed a glorious chance early on, with John Marquis heading wide from two yards out, while Andy Williams nodded against the top of the bar moments later.
Rovers had the ball in the net on five minutes, but Marquis was flagged offside moments before beating Christian Walton, while Joe Wright sent a header wide from a corner.
Doncaster went ahead after 21 minutes when James Coppinger slammed home his fifth of the season from close range, while Town captain Scott Cuthbert was stretchered off in the aftermath after a nasty head injury.
However, Luton then came storming back into the contest and were level on 36 minutes when Olly Lee's wonderful fizzing cross was powered home at the back post by Cameron McGeehan.
The game changed four minutes before the break when Danny Hylton's wonderful backheel sent Jack Marriott away and he slotted under Doncaster goalkeeper Marko Marosi to give Luton a lead they had scarcely deserved.
After the break, McGeehan went close to making it 3-1 when his shot deflected over, while Tommy Rowe's tame free-kick was easy for Walton.
Marriott almost had a second, his shot bouncing into the grateful gloves of Marosi, before Luton made sure of the three points with 81 minutes gone as Pelly Ruddock was felled in the area by Wright, and McGeehan fired the spot-kick into the roof of the net.
The Hatters were reduced to 10 men in the closing seconds as Hylton picked up his second booking, before Walton saved superbly from Marquis as Luton ran out winners.
Report supplied by the Press Association.
Match ends, Luton Town 3, Doncaster Rovers 1.
Second Half ends, Luton Town 3, Doncaster Rovers 1.
Corner,  Doncaster Rovers. Conceded by Dan Potts.
Corner,  Doncaster Rovers. Conceded by James Justin.
Second yellow card to Danny Hylton (Luton Town).
Attempt saved. Matty Blair (Doncaster Rovers) right footed shot from the right side of the box is saved in the bottom right corner.
Hand ball by Pelly Ruddock (Luton Town).
Dan Potts (Luton Town) is shown the yellow card for a bad foul.
Substitution, Luton Town. Alex Gilliead replaces Cameron McGeehan.
Corner,  Luton Town. Conceded by Joe Wright.
Dan Potts (Luton Town) wins a free kick in the attacking half.
Foul by James Coppinger (Doncaster Rovers).
Pelly Ruddock (Luton Town) wins a free kick in the defensive half.
Foul by Jordan Houghton (Doncaster Rovers).
Goal!  Luton Town 3, Doncaster Rovers 1. Cameron McGeehan (Luton Town) converts the penalty with a right footed shot to the high centre of the goal.
Joe Wright (Doncaster Rovers) is shown the yellow card for a bad foul.
Penalty Luton Town. Pelly Ruddock draws a foul in the penalty area.
Penalty conceded by Joe Wright (Doncaster Rovers) after a foul in the penalty area.
Attempt saved. Alan Sheehan (Luton Town) left footed shot from outside the box is saved in the centre of the goal.
Delay in match Jack Marriott (Luton Town) because of an injury.
Jack Marriott (Luton Town) wins a free kick in the attacking half.
Foul by Andy Butler (Doncaster Rovers).
Substitution, Doncaster Rovers. Harry Middleton replaces Tommy Rowe.
Jack Marriott (Luton Town) wins a free kick on the right wing.
Foul by Matty Blair (Doncaster Rovers).
Delay in match Dan Potts (Luton Town) because of an injury.
Delay in match Pelly Ruddock (Luton Town) because of an injury.
Foul by Pelly Ruddock (Luton Town).
Andy Butler (Doncaster Rovers) wins a free kick in the attacking half.
James Justin (Luton Town) wins a free kick on the left wing.
Foul by James Coppinger (Doncaster Rovers).
Substitution, Doncaster Rovers. Riccardo Calder replaces Cedric Evina.
Substitution, Doncaster Rovers. Mathieu Baudry replaces Frazer Richardson.
Attempt blocked. John Mullins (Luton Town) right footed shot from the centre of the box is blocked.
Cedric Evina (Doncaster Rovers) is shown the yellow card for a bad foul.
James Justin (Luton Town) wins a free kick in the defensive half.
Foul by Cedric Evina (Doncaster Rovers).
Alan Sheehan (Luton Town) wins a free kick in the defensive half.
Foul by Andy Williams (Doncaster Rovers).
Attempt saved. Jack Marriott (Luton Town) right footed shot from the centre of the box is saved in the top centre of the goal.
Luton battled back from a goal down to beat Doncaster 3-1 in a thrilling game at Kenilworth Road.