Two goals in as many minutes shocked Bristol Rovers and handed Rotherham victory in League Two.
Rotherham's Lee Frecklington cleared the crossbar with a wayward lob in a dull first half.
Kayode Odejayi slotted home from 10 yards after Steve Mildenhall saved from Alex Revell to put the visitors ahead, before Frecklington volleyed in from 12 yards out.
Joe Anyinsah replied for the hosts with a swerving shot from outside the box.
VIEWS FROM THE DRESSING ROOM
Bristol Rovers manager John Ward told BBC Radio Bristol:
"We've played a team that's expecting to get into the top three and probably win the league with the amount of money they've spent, and we've run them really close.
"Their celebrations at the end tell me they've expected a really difficult game against ourselves, and we've done that.
"I'm disappointed with the goals simply by the way they've come about very close together. If we keep it at one, we come back into the game and take something from the game.
"I can't fault the effort of the team and supporters, and together we've had a positive go."
Rotherham United manager Steve Evans told BBC Radio Sheffield:
"It was a hard fought win, that's for sure. I think we started the game really well for 25 minutes and we were the only team in the game.
"To be fair they are a good side, it was hard for us but we got the two goals.
"I can note four chances we've not taken and we've taken two. We could have come here and won by six. That would have been harsh on Bristol Rovers but that could have been the score."
"I've always had the greatest of confidence in my team, greatest confidence in my staff. I said a few weeks ago, we win together, we lose together."
Live Text Commentary
Full Time The referee signals the end of the game.90:00 +3:18
Unfair challenge on Jordan Slew by Michael Smith results in a free kick. Kari Arnason restarts play with the free kick.90:00 +2:46
Jordan Slew concedes a free kick for a foul on Mark McChrystal. Tom Parkes takes the direct free kick.90:00 +1:29
Free kick awarded for a foul by Lee Frecklington on Tom Parkes. Tom Parkes takes the direct free kick.90:00 +0:26
Jordan Slew is flagged offside by the assistant referee. Free kick taken by Steve Mildenhall.88:21 Substitution
Substitution (Rotherham) makes a substitution, with Jordan Slew coming on for Alex Revell.87:14
Johnny Mullins challenges Eliot Richards unfairly and gives away a free kick. Lee Brown produces a shot on goal direct from the free kick.82:51
Mark McChrystal concedes a free kick for a foul on Kayode Odejayi. The free kick is swung in left-footed by Courtney Cameron, clearance by John-Joe O'Toole.80:25 Goal scored
Goal! - Joe Anyinsah - Bristol R 1 - 2 Rotherham Joe Anyinsah scores a goal from the edge of the penalty area to the bottom right corner of the goal. Bristol Rovers 1-2 Rotherham.79:01
The ball is crossed by Michael Smith.77:48
Kayode Odejayi handles the ball and concedes a free kick. Steve Mildenhall restarts play with the free kick.77:06 Substitution
Substitution (Rotherham) makes a substitution, with Courtney Cameron coming on for David Noble.75:34
Foul by John-Joe O'Toole on Kari Arnason, free kick awarded. Free kick taken by Andy Warrington.74:06
Corner taken by David Noble from the right by-line, clearance by John-Joe O'Toole.72:10
Shot from just outside the area by Tom Parkes goes over the bar.71:44
Corner taken by Eliot Richards from the right by-line to the near post, clearance made by Liam Ridehalgh.70:04
Unfair challenge on Michael Smith by Kieran Agard results in a free kick. The free kick is delivered right-footed by Eliot Richards from right wing, Claude Davis makes a clearance. Shot by David Clarkson. Andy Warrington makes a save. Inswinging corner taken by Tom Hitchcock from the left by-line, clearance by Johnny Mullins.68:36
Unfair challenge on Eliot Richards by Mark Bradley results in a free kick. Free kick crossed right-footed by Eliot Richards, Kari Arnason makes a clearance.67:22 Substitution
Substitution Oliver Norburn goes off and Tom Hitchcock comes on.66:59
The ball is crossed by Michael Smith, save made by Andy Warrington.
Alex Revell takes a shot. Blocked by Michael Smith.61:57
The assist for the goal came from Kayode Odejayi.61:57 Goal scored
Goal! - Lee Frecklington - Bristol R 0 - 2 Rotherham Lee Frecklington gets on the score sheet with a goal from deep inside the penalty box to the top right corner of the goal. Bristol Rovers 0-2 Rotherham.61:29
Lee Brown concedes a free kick for a foul on Kieran Agard. David Noble restarts play with the free kick.59:41
Assist on the goal came from Alex Revell.59:41 Goal scored
Goal! - Kayode Odejayi - Bristol R 0 - 1 Rotherham Kayode Odejayi fires in a goal from inside the box to the bottom right corner of the goal. Bristol Rovers 0-1 Rotherham.59:17
Alex Revell takes a shot. Save by Steve Mildenhall.58:57
Kari Arnason has a shot on goal from outside the area which misses right.57:05
Foul by Claude Davis on John-Joe O'Toole, free kick awarded. Eliot Richards crosses the ball in from the free kick, clearance made by Claude Davis. Short corner taken by Seanan Clucas from the right by-line.53:50
John-Joe O'Toole delivers the ball, clearance made by Johnny Mullins.51:30
Eliot Richards is adjudged to have handled the ball. Andy Warrington restarts play with the free kick.48:58
A cross is delivered by Lee Frecklington, Kayode Odejayi takes a shot. Blocked by Mark McChrystal. Kari Arnason takes a shot. Blocked by Tom Parkes. David Noble takes a inswinging corner from the left by-line played to the near post.48:35
The assistant referee signals for offside against Kayode Odejayi. Tom Parkes takes the free kick.47:26
Kayode Odejayi takes a shot. Steve Mildenhall makes a save.46:30
David Clarkson takes a shot. Andy Warrington makes a save.45:01
The referee blows his whistle to start the second half.45:01 Substitution
Substitution (Rotherham) makes a substitution, with Kayode Odejayi coming on for Daniel Kearns.45:01 Substitution
Substitution Ryan Brunt goes off and David Clarkson comes on.44:18 Half time
Half Time The referee calls an end to the first half.42:49
Mark Bradley gives away a free kick for an unfair challenge on John-Joe O'Toole. Steve Mildenhall restarts play with the free kick.40:13
A cross is delivered by Lee Brown, Johnny Mullins makes a clearance.38:53
The ball is sent over by Alex Revell, Michael Smith manages to make a clearance. Liam Ridehalgh delivers the ball, Steve Mildenhall makes a save.38:23
Lee Brown crosses the ball, Claude Davis manages to make a clearance.37:52
The ball is crossed by Michael Smith, Claude Davis makes a clearance.35:47
Corner taken right-footed by Eliot Richards from the right by-line, Header by Tom Parkes from deep inside the penalty area misses to the left of the target.34:53
Shot from deep inside the area by Lee Frecklington clears the crossbar.34:17
The ball is delivered by Michael Smith, Johnny Mullins manages to make a clearance. The ball is delivered by Michael Smith, save made by Andy Warrington.33:30
The ball is swung over by Mark Bradley.32:03
Johnny Mullins fouled by Ryan Brunt, the ref awards a free kick. Andy Warrington takes the direct free kick.31:38
David Noble produces a cross, save by Steve Mildenhall.29:32
The ball is swung over by Lee Brown, clearance by Johnny Mullins. The ball is delivered by David Noble, clearance by Tom Parkes.28:21
Alex Revell challenges Tom Parkes unfairly and gives away a free kick. Free kick taken by Steve Mildenhall.25:50
Free kick awarded for an unfair challenge on Kari Arnason by John-Joe O'Toole. Free kick taken by Andy Warrington.24:53
John-Joe O'Toole has a shot on goal from outside the box which misses right.22:50
Corner taken by David Noble from the left by-line, save by Steve Mildenhall.21:45
Foul by Ryan Brunt on Lee Frecklington, free kick awarded. Free kick taken by Mark Bradley.20:18
Kieran Agard produces a cross, Alex Revell takes a shot. Steve Mildenhall makes a save.19:08
Unfair challenge on Oliver Norburn by Kieran Agard results in a free kick. Steve Mildenhall restarts play with the free kick.18:00
The assistant referee flags for offside against John-Joe O'Toole. Andy Warrington takes the free kick.17:20
Long distance effort from Oliver Norburn misses to the left of the goal.16:03
Free kick awarded for a foul by Claude Davis on Ryan Brunt. Oliver Norburn crosses the ball from the free kick right-footed from right channel, Mark McChrystal concedes a free kick for a foul on Alex Revell. Direct free kick taken by Andy Warrington.15:24
David Noble sends in a cross.14:01
Direct free kick taken by Lee Frecklington.14:01 Substitution
Substitution (Bristol Rovers) makes a substitution, with Eliot Richards coming on for Fabian Broghammer.14:01
Mark McChrystal gives away a free kick for an unfair challenge on Alex Revell.13:28
Ryan Brunt sends in a cross, clearance made by David Noble.11:14
David Noble takes the inswinging corner, save made by Steve Mildenhall.10:29
Corner taken by Alex Revell played to the near post, clearance made by Tom Parkes.9:53
Michael Smith delivers the ball, clearance made by Johnny Mullins.9:38
The ball is sent over by Seanan Clucas, clearance made by Johnny Mullins.9:03
Kari Arnason takes a shot. Blocked by Mark McChrystal.8:02
Unfair challenge on Liam Ridehalgh by Joe Anyinsah results in a free kick. Liam Ridehalgh takes the free kick.0:53
Lee Frecklington is adjudged to have handled the ball. Steve Mildenhall takes the direct free kick. Ryan Brunt fouled by Johnny Mullins, the ref awards a free kick. Fabian Broghammer takes the free kick.0:00
The ref blows the whistle to start the match.
Live data and text provided by our data suppliers