Jeff Hughes scored in each half as League One Notts County upset Doncaster to reach the FA Cup fourth round.
Midfielder Hughes was gifted the opening goal when he steered in at the back post after Doncaster failed to clear Alan Sheehan's free-kick.
Giles Barnes passed up the Championship side's best opportunity of the game when he shot over from close range.
With 20 minutes left, Hughes secured the surprise win with a penalty after Kyle Bennett fouled Sheehan.
DID YOU KNOW?
- Notts County had lost their last three meetings with Doncaster in the FA Cup: in 1963 (second-round replay), 1968 (first round), and 1989 (first round).
Doncaster had come into the game on a run of three consecutive home victories but were more than matched in all departments by Martin Allen's side.
County enjoyed their first opening just before the quarter-hour mark when Sam Hird supplied Karl Hawley, who shot narrowly wide.
The visitors settled impressively and Lee Hughes was inches away from breaking the deadlock with a header from full-back Julian Kelly's excellent cross.
Doncaster midfielder Brian Stock then carelessly gave away possession inside his own half with 23 minutes gone, allowing Alan Judge to advance for the Magpies and drill wide from 20 yards.
Judge made another chance following some smart work in the inside right position, but home goalkeeper David Button reacted sharply to parry clear.
At the other end, Barnes spurned a free header from James Coppinger's 32nd-minute centre, nodding into the arms of grateful Magpies keeper Stuart Nelson.
It was a miss Dean Saunders's side would regret soon afterwards when some sloppy defending allowed Jeff Hughes to score his first, turning the ball in at the back post with eight minutes of the opening period remaining.
The South Yorkshire side made the brighter start to the second half as Bennett brought a fine save from Nelson with a swerving, dipping drive.
Lee Hughes had an effort deflected wide as Notts County continued to threaten on the break, before Doncaster's James Hayter had a penalty appeal rejected when he went to ground under pressure from Stewart shortly after the hour.
Coppinger almost found a fortuitous equaliser when his arching cross had Nelson backpedalling to tip around a post.
The resulting corner was only partially cleared and, when Coppinger sent the ball back into the area, it fell to Barnes who blazed wastefully over from 10 yards.
Once again, a Barnes miss was followed by a County goal as Bennett hacked through the back of Sheehan in the box and Jeff Hughes coolly found the corner.
Bennett had the chance to redeem himself when Hayter played him into space in the County area, but he slashed wide before El-Hadji Diouf followed up a booking for dissent by heading wide from fellow substitute Martin Woods's free-kick.
Doncaster Rovers manager Dean Saunders told BBC Radio Sheffield:
"I'm really disappointed. No matter how much you warn the players, I knew Notts County were a decent team. They are well organised and good at set-plays.
"Last week we gave it everything we had and this week we just looked off the pace. We never did anything that we did last week which is really frustrating. We conceded a terrible goal from a ball just punted into the box. We had everyone in position and we went over it this morning and still conceded.
"With half an hour to go we were still in the game and I still thought if we got a goal we would go on and win the game but then Kyle gives a ridiculous penalty away and that put us behind the eight ball."
Notts County manager Martin Allen told BBC Radio Nottingham:
"The atmosphere from the start to the finish even in the pre-match warm-up was magic.
"We deserved to win it, played some good football and defended valiantly to keep a clean sheet
"All the players have played superbly well."
Sorry, we were unable to load match stats, please try again.