Match ends, Shrewsbury Town 1, Walsall 3.
Walsall moved up to third in League One after easing past Shrewsbury in their first game since the departure of boss Dean Smith, who left the club on Monday to join Championship side Brentford.
Shrewsbury went ahead through Larnell Cole's 41st-minute strike.
Milan Lalkovic equalised from the edge of the box to make it 1-1 at half-time.
After Town had Ian Black sent off for a second yellow card, Paul Downing headed the Saddlers in front before Jordan Cook fired home in the final minute.
Cook was on as a first-half substitute for former Shrewsbury striker Tom Bradshaw, who went off with an ankle injury.
Walsall joint caretaker-manager Jon Whitney told BBC WM:
"We knew it was going to be a scrappy affair, with the weather and the conditions.
"We knew it would be dogged. We knew we'd have to stick in there and wouldn't always be able to play our football but, when we did, it gave us our rewards in the end.
"The philosophy is we are trying to get these players to self-manage. We're really big on it in training. Every day we get them to problem-solve. We're not there to dictate to the players. We're there to facilitate and help them reach their full potential."
- 29ColeSubstituted forAkpa-Akproat 45'minutes
- 6BlackBooked at 71mins
- 16VernonSubstituted forLawrenceat 76'minutes
- 6DowningBooked at 56mins
- 18MorrisSubstituted forBaxendaleat 90+4'minutes
- 15LalkovicSubstituted forFordeat 77'minutes
- 9BradshawSubstituted forCookat 27'minutes
- Peter Bankes
- Shots on Target
Second Half ends, Shrewsbury Town 1, Walsall 3.
Substitution, Walsall. James Baxendale replaces Kieron Morris.
Goal! Shrewsbury Town 1, Walsall 3. Jordan Cook (Walsall) left footed shot from the centre of the box to the top left corner. Assisted by Rico Henry.
Foul by Junior Brown (Shrewsbury Town).
Jordan Cook (Walsall) wins a free kick in the defensive half.
Attempt missed. Anthony Forde (Walsall) right footed shot from outside the box misses to the right.
Attempt missed. Jordan Cook (Walsall) header from the centre of the box misses to the right following a corner.
Corner, Walsall. Conceded by Junior Brown.
Attempt blocked. Jason Demetriou (Walsall) right footed shot from outside the box is blocked.
Corner, Walsall. Conceded by Jermaine Grandison.
Goal! Shrewsbury Town 1, Walsall 2. Paul Downing (Walsall) header from the centre of the box to the bottom right corner. Assisted by James O'Connor with a cross following a corner.
Corner, Walsall. Conceded by Liam Lawrence.
Attempt blocked. Kieron Morris (Walsall) left footed shot from outside the box is blocked.
Attempt saved. Jordan Cook (Walsall) right footed shot from the centre of the box is saved in the top centre of the goal.
Substitution, Walsall. Anthony Forde replaces Milan Lalkovic.
Substitution, Shrewsbury Town. Liam Lawrence replaces Scott Vernon.
Attempt saved. Romaine Sawyers (Walsall) right footed shot from outside the box is saved in the top centre of the goal.
James Collins (Shrewsbury Town) wins a free kick in the attacking half.
Foul by James O'Connor (Walsall).