Keshi Anderson’s dramatic 87th-minute strike led Doncaster Rovers to their first away victory of the season.
The 20-year-old Crystal Palace loanee smashed a vital winner after captain James Coppinger’s effort was cancelled out by Nat Knight Percival’s header.
Rovers took the lead when a corner fell to veteran midfielder Coppinger, who calmly slotted into the bottom corner.
Six minutes later, Thorsten Stuckmann produced a phenomenal triple save to keep the hosts at bay – first denying Frenchman John-Louis Akpa Akpro before twice stopping Larnell Cole.
Knight-Percival levelled in the 27th minute and that is how it stayed until the break.
Rovers’ had penalty appeals either side of the hour mark, as Anderson was dragged to the ground both times. But after the loanee had put them in front for a second time, Matt Tootle seemingly salvaged a point when he headed past Stuckmann, but it was flagged offside.
Shrewsbury Town: Leutwiler, Tootle, Smith, Knight-Percival, Brown, Lawrence, Black (Clark 63), Ogogo, Kaikai, Akpa-Akpro (Barnett 72), Cole. Unused substitutes: Sadler, Collins, Ellis, McAlinden, Rowley.
Doncaster Rovers: Stuckmann, Lund, Butler, Mackenzie (McCullough 72), Evina, Coppinger, Wellens, Chaplow (Middleton 64), Stewart, Tyson (Williams 90), Anderson. Unused substitutes:Forrester, N’Guessan, Taylor-Sinclair, Marosi.
Referee: Kevin Johnson.