Relegation strugglers Bury stunned managerless Swindon and ended the Robins' 13-match unbeaten run.
Steven Schumacher scored the only goal of the game, turning in Joe Skarz's cross to secure the Shakers their third away win of the season.
Swindon looked lost without the influence of ex-boss Paolo Di Canio and created few chances.
James Collins volleyed wide in the second half, while Aden Flint's header was well saved by keeper Trevor Carson.
At the other end, Wes Foderingham was forced in to action after Schumacher's powerful shot.
The result means Swindon slide down to fourth in League One, while Bury remain 22nd.
VIEWS FROM THE DRESSING ROOM
Swindon Town caretaker manager Tommy Miller told BBC Wiltshire:
"We were rubbish throughout. We didn't get going at all, and I include myself in this.
"You wouldn't have thought the top of the league was at stake.
"Maybe it was down to complacency because Bury are struggling and it would have been an easy three points.
"We weren't at the races and it was very disappointing."
Bury manager Kevin Blackwell told BBC Radio Manchester:
"We knew we had to be well organised because they're good going forward and they've scored a lot of goals this season.
"The players stuck to the game plan and that's what frustrates me. On Friday night after 60 minutes, we looked as though we were comfortable and then we shoot ourselves in the foot with stupid decisions.
"I feel like I should be standing here with six points but what a way to return. To come to the team second in the table and do that to them was fantastic."
Live Text Commentary
Full Time The referee signals the end of the game.90:00 +3:19
Inswinging corner taken right-footed by Luke Rooney played to the near post, clearance made by Ethan Ebanks-Landell.90:00 +2:14
The referee blows for offside against Jonson Clarke-Harris. Wes Foderingham takes the indirect free kick.90:00 +1:34
Corner taken short by Steven Schumacher.90:00 +0:18
Nick Ajose fouled by Nathan Thompson, the ref awards a free kick. Direct strike on goal from the free kick comes in from Steven Schumacher, save by Wes Foderingham. Steven Schumacher decides to take a short corner.89:12
The referee blows for offside against Jonson Clarke-Harris. Indirect free kick taken by Wes Foderingham.86:47
The referee blows for offside against Jonson Clarke-Harris. Nathan Thompson restarts play with the free kick.85:49
Unfair challenge on Mark Carrington by Adam Rooney results in a free kick. Trevor Carson takes the free kick.83:13
Outswinging corner taken from the right by-line by Tommy Miller, Steven Schumacher manages to make a clearance.82:36
Jay McEveley restarts play with the free kick.82:36 Booking
Booking Steven Schumacher goes into the book.82:15
Free kick awarded for a foul by Steven Schumacher on Alan McCormack.81:26
Shot by Adam Rooney from 18 yards. Save by Trevor Carson.80:53
Free kick taken by Nathan Thompson.80:53 Booking
Booking The referee cautions Jonson Clarke-Harris for unsporting behaviour.80:46
The referee blows for offside.80:17
James Collins takes a shot. Save made by Trevor Carson.78:55
Jay McEveley takes the indirect free kick.78:55 Substitution
Substitution Craig Fagan goes off and Jonson Clarke-Harris comes on.78:55 Substitution
Substitution Craig Jones on for Tom Soares.
David Worrall gives away a free kick for an unfair challenge on Luke Rooney.77:31
Luke Rooney fires a strike on goal direct from the free kick, comfortable save by Trevor Carson.77:31 Booking
Booking Mark Carrington receives a caution.77:07
Foul by Mark Carrington on James Collins, free kick awarded.75:39
Free kick awarded for a foul by Andy Williams on Joe Skarz. Trevor Carson takes the indirect free kick.73:41 Substitution
Substitution Luke Rooney on for Gary Roberts.72:27
Steven Schumacher takes a shot from just outside the penalty area which clears the crossbar.70:08
Free kick taken by Gary Roberts.70:08 Booking
Booking Tom Soares goes into the referee's book.69:52
Free kick awarded for an unfair challenge on Nathan Thompson by Tom Soares.69:06
Nathan Thompson takes the indirect free kick.69:06 Booking
Booking Booking for Craig Fagan for unsporting behaviour.68:40
Craig Fagan concedes a free kick for a foul on Alan McCormack.66:59
Inswinging corner taken right-footed by Tommy Miller, Mark Carrington manages to make a clearance.66:59 Substitution
Substitution Adam Rooney joins the action as a substitute, replacing Raffaele De Vita.65:29
James Collins takes a shot from just outside the penalty area which clears the crossbar.61:54
Joe Skarz concedes a free kick for a foul on Gary Roberts. Wes Foderingham takes the free kick.61:54 Booking
Booking The referee books Joe Skarz for time wasting.59:26 Substitution
Substitution (Swindon) makes a substitution, with Nathan Thompson coming on for Alan Navarro.59:26
Gary Roberts has an effort at goal from just outside the box which goes wide of the right-hand post.54:52
Unfair challenge on Craig Fagan by Alan McCormack results in a free kick. Free kick crossed right-footed by Mark Carrington from left by-line, Aden Flint manages to make a clearance.47:40
Craig Fagan challenges Aden Flint unfairly and gives away a free kick. Gary Roberts takes the direct free kick.46:24
Gary Roberts takes a inswinging corner.45:01
The referee starts the second half.45:00 +1:23 Half time
Half Time The referee calls an end to the first half.43:25
Tom Soares concedes a free kick for a foul on Alan McCormack. Alan McCormack takes the indirect free kick.39:10
Corner from the left by-line taken by Tommy Miller, Aden Flint produces a header from inside the area that goes over the crossbar.38:12
Inswinging corner taken by Gary Roberts from the right by-line.36:31
Steven Schumacher challenges James Collins unfairly and gives away a free kick. The ball is sent over by Gary Roberts, Darren Ward has a headed effort from close range and clears the bar.34:54
Steven Schumacher gives away a free kick for an unfair challenge on Darren Ward. Jay McEveley takes the indirect free kick.31:53
Foul by Joe Skarz on Andy Williams, free kick awarded. Gary Roberts crosses the ball from the free kick left-footed from right wing, clearance made by Ethan Ebanks-Landell.27:44
James Collins takes a shot from a long way out which goes wide of the right-hand upright.26:57
Free kick awarded for an unfair challenge on Aden Flint by Craig Fagan. Indirect free kick taken by Alan McCormack.23:15
Shot from just outside the box by Mark Carrington goes over the bar.23:01
Unfair challenge on Mark Carrington by Alan Navarro results in a free kick. Mark Carrington restarts play with the free kick.20:19
The assist for the goal came from Joe Skarz.20:19 Goal scored
Goal! - Steven Schumacher - Swindon 0 - 1 Bury Steven Schumacher fires in a goal from long distance to the bottom right corner of the goal. Swindon 0-1 Bury.19:35
Zac Thompson is flagged offside by the assistant referee. Alan McCormack takes the free kick.18:41
Gary Roberts is penalised for handball and concedes a free kick. Free kick taken by Trevor Carson.17:43
David Worrall challenges Raffaele De Vita unfairly and gives away a free kick. Free kick crossed right-footed by Tommy Miller from left channel, Ashley Eastham manages to make a clearance.17:01
David Worrall produces a left-footed shot from just outside the penalty box that misses to the left of the goal.14:48
Inswinging corner taken left-footed by Gary Roberts, Steven Schumacher manages to make a clearance.13:10
Free kick awarded for a foul by Jay McEveley on Nick Ajose. Indirect free kick taken by Trevor Carson.12:41
Mark Carrington gives away a free kick for an unfair challenge on Alan Navarro. Indirect free kick taken by Alan McCormack.10:30
The referee blows for offside. Free kick taken by Trevor Carson.9:31
Alan McCormack fouled by Steven Schumacher, the ref awards a free kick. Indirect free kick taken by Wes Foderingham.7:29
Short corner worked by Joe Skarz.5:20
James Collins gives away a free kick for an unfair challenge on Mark Carrington. David Worrall takes the indirect free kick.4:39
Craig Fagan is flagged offside by the assistant referee. Wes Foderingham restarts play with the free kick.0:00
The ref blows the whistle to begin the match.
Live data and text provided by our data suppliers