After Michael Smith's third-minute opener had been cancelled out by Walsall's Tom Bradshaw, Swindon scored three goals in the first 12 minutes of the second half to claim the points.
Massimo Luongo restored the visitors' advantage a minute after the restart, before a double from Andrew Williams wrapped up the three points.
Leaders Bristol City saw off bottom club Yeovil Town 2-1, despite Kieran Agard's missed penalty, to stay a point ahead of MK Dons, who beat Notts County 1-0 thanks to forward Daniel Powell's 31st-minute goal.
Paul Gallagher's penalty gave Preston North End, who sit fourth, a 1-0 win over Barnsley, but their Lancashire rivals Rochdale could not mark manager Keith Hill's new contract with a win as they lost 2-1 at Scunthorpe United.
At the other end of the table Leyton Orient moved out of the relegation zone by beating Crawley Town 4-1, striker Chris Dagnall on target with a double.
Crewe Alexandra sealed a dramatic 2-1 success at Oldham Athletic, despite seeing George Ray sent off in the 56th minute.
Nicky Ajose put Crewe ahead in the 70th minute, only for George Elokobi to level five minutes later.
But Ajose had the final say four minutes from time as he secured a second straight win for Crewe.
Second-bottom Colchester United's poor season continued with a 2-1 home defeat to Gillingham, while Coventry City suffered a 2-0 reverse at Doncaster Rovers in a game that saw James Maddison and Adam Barton dismissed in the second half for the visitors.
Elsewhere, Dany N'Guessan's 79th-minute penalty ensured a 2-1 win for Port Vale versus Sheffield United, who had Chris Basham sent off, Chesterfield overcame Peterborough United 3-2, and Bradford City were 2-0 winners at Fleetwood Town.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.