Match ends, Swindon Town 2, Walsall 1.
Swindon Town's Louis Thompson struck late to inflict a first away League One defeat of the season on Walsall.
An unmarked Jonathan Obika headed in off the inside of the post to give Swindon a first-half lead.
Tom Bradshaw looked to have earned Walsall a point when he slotted in from the edge of the area on 61 minutes.
But Thompson's fierce, low strike in the last minute of normal time lifted struggling Town out of the relegation zone with a second win in three games.
Dean Smith's Saddlers, who were unbeaten in their previous five games in all competitions, drop to fourth in League One.
Bradshaw had earlier seen a powerful drive tipped over by Swindon's Lawrence Vigouroux - a save that was to prove crucial when Thompson stole all three points.
Walsall manager Dean Smith told BBC WM:
"I feel I should get on the phone and call the police and get somebody arrested for this result.
"First half we weren't clinical, as we weren't on Saturday, but we can't complain about our performance. We were excellent. We dominated a team who normally dominate other teams with the ball.
"There was only one team that was going to win it when we equalised and I'd have been disappointed with a point."
- 29Rossi BrancoBooked at 74mins
- 34El-AbdBooked at 87mins
- 6TurnbullBooked at 34mins
- 27BarryBooked at 70mins
- 17GladwinBooked at 51minsSubstituted forRobertat 58'minutes
- 18ThompsonSubstituted forRodgersat 90+3'minutes
- 27EvansBooked at 73minsSubstituted forFlanaganat 76'minutes
- 21CookSubstituted forLalkovicat 82'minutes
- Keith Hill
- Shots on Target
Second Half ends, Swindon Town 2, Walsall 1.
Corner, Walsall. Conceded by Adam El-Abd.
Substitution, Swindon Town. Anton Rodgers replaces Louis Thompson because of an injury.
Goal! Swindon Town 2, Walsall 1. Louis Thompson (Swindon Town) right footed shot from outside the box to the bottom right corner.
Corner, Walsall. Conceded by Louis Thompson.
Adam El-Abd (Swindon Town) is shown the yellow card for a bad foul.
Foul by Adam El-Abd (Swindon Town).
Rico Henry (Walsall) wins a free kick on the left wing.
Attempt saved. Jonathan Obika (Swindon Town) right footed shot from the right side of the box is saved in the centre of the goal.
Attempt saved. Paul Downing (Walsall) header from the centre of the box is saved in the centre of the goal.
Corner, Walsall. Conceded by Jordan Turnbull.
Substitution, Walsall. Milan Lalkovic replaces Jordan Cook.
Fabien Robert (Swindon Town) wins a free kick in the defensive half.
Foul by Adam Chambers (Walsall).
Attempt blocked. Nicky Ajose (Swindon Town) right footed shot from the right side of the box is blocked.
Attempt missed. Anthony Forde (Walsall) right footed shot from the left side of the box misses to the left.
Foul by Raphael Rossi Branco (Swindon Town).
Tom Bradshaw (Walsall) wins a free kick in the attacking half.
Foul by Jonathan Obika (Swindon Town).