Match ends, Charlton Athletic 3, Luton Town 1.
Lyle Taylor's double helped Charlton to a precious three points against Luton in their battle for Championship survival.
In an even first half, Taylor gave the hosts early impetus with a smart half-volley, but the lead was short-lived as Harry Cornick pounced on a poor clearance to smash a low shot into the corner.
Taylor put the Addicks back in front from the penalty spot - his seventh goal against the Hatters in the last five meetings - after James Collins handled George Lapslie's shot.
And Lapslie wrapped up victory late on with his first league goal for Charlton, slotting home after a one-two with Macauley Bonne.
Both teams were buoyed by improved form in their battle to avoid relegation.
Charlton have now followed a run of one win in 17 games with three victories in their last five games, while Luton had picked up three wins in five going into this game after seven defeats in the previous eight.
Luton arrived at The Valley with successive clean sheets and back-to-back wins behind them, having kept their opponents scoreless just once prior to that in the entire league campaign so far.
But it was a familiar story as the Championship's leakiest defence conceded three or more goals in London for the sixth match running, to take their 'Goals Against' tally for the season to 69 in 34 matches.
The Hatters had an early let-off in an even first half when Naby Sarr hammered a shot against the bar from 10 yards, but the match turned early in the second half with the scores level.
Town's top scorer Collins had the ball in the net, only to be flagged offside, and just moments later conceded the penalty which gave the Addicks their match-winning lead.
Charlton Athletic manager Lee Bowyer:
"We created enough chances in the second half to win the game comfortably. We moved the ball quicker. Our movement off the ball was better.
"It was a big three points. They all are now. Every point is valuable. Nothing is given to you in this league. You have to earn it.
"There's a lot to play for. There's a lot more teams in this scrap than people realise. It's the teams above us that are going to get drawn into this."
Luton Town manager Graeme Jones told BBC Three Counties Radio:
"I've got no complaints with the lads. The big moment in the game was our offside goal, which we've looked at and it wasn't. If there was ever a game that swung on a big decision, that was it.
"At 2-1 you're in the ascendancy but then Collins obviously gives a silly penalty away. We're chasing the game, try and get an extra attacker on the pitch and we concede a third goal.
"We were fantastic. We played some good stuff. We're starting to get a consistent performance and look about us, which satisfies me."
- 4OshilajaBooked at 44minsSubstituted forLapslieat 55'minutes
- 29OztumerSubstituted forBonneat 79'minutes
- 9TaylorBooked at 76mins
- 18GreenSubstituted forPearceat 88'minutes
- 26BreeSubstituted forBoltonat 82'minutes
- 6PearsonBooked at 84mins
- 16ReaBooked at 67minsSubstituted forMcManamanat 70'minutes
- 4TunnicliffeBooked at 26mins
- 14CornickSubstituted forMoncurat 70'minutes
- Andre Marriner
- Shots on Target
Second Half ends, Charlton Athletic 3, Luton Town 1.
Attempt missed. George Moncur (Luton Town) right footed shot from outside the box is too high.
Attempt blocked. Callum McManaman (Luton Town) left footed shot from outside the box is blocked.
Callum McManaman (Luton Town) wins a free kick in the defensive half.
Foul by David Davis (Charlton Athletic).
Corner, Luton Town. Conceded by Alfie Doughty.
Substitution, Charlton Athletic. Jason Pearce replaces Andre Green.
Goal! Charlton Athletic 3, Luton Town 1. George Lapslie (Charlton Athletic) right footed shot from very close range to the bottom right corner. Assisted by Macauley Bonne.
Attempt missed. Callum McManaman (Luton Town) left footed shot from a difficult angle on the left is close, but misses to the left. Assisted by Ryan Tunnicliffe.
Offside, Charlton Athletic. Lyle Taylor tries a through ball, but Macauley Bonne is caught offside.
Foul by Matty Pearson (Luton Town).
Josh Cullen (Charlton Athletic) wins a free kick in the defensive half.
Attempt missed. George Moncur (Luton Town) right footed shot from outside the box misses to the left. Assisted by Dan Potts.
Substitution, Luton Town. Luke Bolton replaces James Bree.
Foul by Matty Pearson (Luton Town).
Macauley Bonne (Charlton Athletic) wins a free kick on the left wing.
Substitution, Charlton Athletic. Macauley Bonne replaces Erhun Oztumer.
Corner, Luton Town. Conceded by Dillon Phillips.
Attempt saved. George Moncur (Luton Town) left footed shot from outside the box is saved in the top left corner. Assisted by James Collins.