Shrewsbury Town 4-3 Charlton Athletic

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.

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.