Walsall’s unbeaten away record in League One came to an end after Louis Thompson’s last-gasp strike earned struggling Swindon a dramatic win.
Jonathan Obika’s 17th-minute header put the Robins in front, before Tom Bradshaw equalised with a low 20-yard strike just past the hour mark.
The Saddlers’ Jordan Cook had a goal disallowed, but Swindon snatched victory at the death when Norwich loanee Thompson drilled home.
Walsall, who were unbeaten in their previous five matches in all competitions, are now down to fourth in League One.
Dean Smith made two changes to his side, with Jordan Cook and Anthony Forde coming in for Milan Lalkovic and Kieron Morris.
The Saddlers showed their attacking intent from the outset with top scorer Bradshaw firing wide from long range inside the first minute.
Despite languishing inside the relegation zone at the start of play, it was Martin Ling’s Robins who broke the deadlock after 17 minutes.
Jordan Turnbull’s close-range header from a corner forced a superb reflex save from visiting stopper Neil Etheridge.
The danger wasn’t averted, though, and as Walsall pushed out, Thompson stood up a fine cross for the unmarked Obika to head home via a post.
Walsall responded positively to the setback, with Cook curling over and Bradshaw then having penalty appeals waved away.
Town keeper Lawrence Vigouroux was employed for the first time on 26 minutes, as he got down well to push away Forde’s right-footed drive.
The Saddlers continued to press for a leveller.
A sloppy Swindon pass led to Romaine Sawyers teeing up Bradshaw who, on the stretch, tested Vigouroux with a low shot to his right.
Despite enjoying plenty of possession and territory, the Saddlers were being restricted mainly to shots from distance.
Forde’s ambitious effort sailed over and Evans’ 25-yard free-kick flew wide, with the former then firing straight at Vigouroux on the cusp of half-time.
HALF-TIME: SWINDON 1-0 WALSALL
Walsall flew out of the blocks at the start of the second half, creating two chances in as many minutes.
First, a flowing move culminated in Bradshaw arrowing a left-footed drive towards the top corner but Vigouroux smartly tipped over.
From the resulting corner, James O’Connor set up Sawyers, who brushed the side-netting with a powerful 20-yard strike.
Rampant Walsall continued to dominate, with Bradshaw volleying over at the near post from Forde’s free-kick.
On 54 minutes, the visitors produced their best move of the night.
Cook clipped a lovely weighted pass down the left to Henry, who delivered a deep cross which Forde headed down into the path of Evans.
The Manchester City loanee was well placed inside the box, 12 yards out, but blazed wastefully over.
But Walsall's persistence finally paid off on 61 minutes, when Bradshaw picked out the far corner with a low right-footed effort from 18 yards.
The Saddlers almost went ahead moments later, when O’Connor’s goalbound header from Forde’s corner was blocked by a home defender.
On a rare Swindon attack, Bradley Barry’s stinging half-volley brought a fine reaction stop from Etheridge at his near upright.
Walsall were the team in the ascendancy and they very nearly took the lead 14 minutes from time.
Vigouroux could only parry Evans’ well-struck 20-yard free-kick, with Cook following up to slam home – only to be flagged for offside.
Undeterred, the visitors continued to press for a second goal.
Forde dragged an effort wide from distance and Paul Downing sent a downward header into the arms of Vigouroux from a corner.
But with time ticking away, it was Swindon who grabbed an unlikely winner.
Thompson intercepted substitute Reece Flanagan’s sloppy pass, advanced forward and drilled a fierce low strike past Etheridge.
It was harsh on the Saddlers.
FULL-TIME: SWINDON 2-1 WALSALLTeam:
Etheridge, Demetriou, O’Connor, Downing, Henry, Chambers, Evans (Flanagan 78’), Cook (Lalkovic 82’), Forde, Sawyers, Bradshaw.
Subs not used: MacGillivray, Taylor, Baxendale, Preston, Morris.