Match ends, Shrewsbury Town 4, Charlton Athletic 3.
Ricky Holmes struck a hat-trick but still ended on the losing side as Shrewsbury beat Charlton in a thrilling encounter.
Holmes' treble was cancelled out by goals from Tyler Roberts and Shaun Whalley plus a brace from Louis Dodds, whose 75th-minute winner helped Paul Hurst's side take another significant step towards League One safety.
Charlton started brightly and home goalkeeper Jayson Leutwiler had to be alert to make three fine saves inside the opening 10 minutes from Lee Novak, Holmes and Jordan Botaka.
And Leutwiler's hard work was rewarded as Shrewsbury moved ahead in the 11th minute, Dodds controlling a right-wing cross from Roberts and confidently finding the bottom corner of the net from 15 yards.
An end-to-end first half saw Leutwiler then sharply push away a close-range header from Josh Magennis, but Shrewsbury were equally dangerous.
Dodds forced a diving save from goalkeeper Declan Rudd and Stephen Humphrys headed a cross from fellow Fulham loanee Jack Grimmer just wide.
Charlton equalised in the 24th minute as Holmes hammered an unstoppable 20-yard drive into the roof of the net and a minute before the break the Charlton winger struck in style again, whipping a free-kick from just outside the area into the top corner.
However, Charlton's lead was wiped out at the start of the second half when Shrewsbury scored two quick goals. Roberts chested down a pass from Mat Sadler to fire home before Whalley drove in a third from just outside the box in the 52nd minute.
Holmes levelled things up again when he completed his hat-trick 20 minutes from time with a low shot.
But Shrewsbury had the final word when Dodds drilled in a low effort, his second goal of a memorable night, after his initial shot was blocked to leave Charlton without a win in their last seven games.
Report supplied by the Press Association.
- 10DoddsSubstituted forRodmanat 90+3'minutes
- 9HumphrysSubstituted forLadapoat 85'minutes
- 27RobertsBooked at 63minsSubstituted forEl-Abdat 89'minutes
- 4JacksonBooked at 64minsSubstituted forDasilvaat 77'minutes
- 32AriboBooked at 89mins
- 14BotakaSubstituted forAhearne-Grantat 69'minutes
- 9MagennisSubstituted forWattat 69'minutesBooked at 90mins
- Michael Salisbury
- Shots on Target
Second Half ends, Shrewsbury Town 4, Charlton Athletic 3.
Corner, Shrewsbury Town. Conceded by Andrew Crofts.
Corner, Shrewsbury Town. Conceded by Declan Rudd.
Attempt saved. Freddie Ladapo (Shrewsbury Town) right footed shot from the centre of the box is saved in the centre of the goal.
Foul by Junior Brown (Shrewsbury Town).
Karlan Ahearne-Grant (Charlton Athletic) wins a free kick in the defensive half.
Substitution, Shrewsbury Town. Alex Rodman replaces Louis Dodds.
Tony Watt (Charlton Athletic) is shown the yellow card for a bad foul.
Ryan Yates (Shrewsbury Town) wins a free kick in the defensive half.
Foul by Tony Watt (Charlton Athletic).
Substitution, Shrewsbury Town. Adam El-Abd replaces Tyler Roberts.
Joe Aribo (Charlton Athletic) is shown the yellow card for a bad foul.
Gary Deegan (Shrewsbury Town) wins a free kick in the defensive half.
Foul by Joe Aribo (Charlton Athletic).
Foul by Gary Deegan (Shrewsbury Town).
Joe Aribo (Charlton Athletic) wins a free kick on the right wing.
Foul by Ryan Yates (Shrewsbury Town).
Joe Aribo (Charlton Athletic) wins a free kick in the attacking half.
Tyler Roberts (Shrewsbury Town) wins a free kick in the defensive half.