Darren Moore’s Rovers were aiming for a fifth consecutive win to take them all the way to the summit, but were denied by a dogged defensive display.
Shrewsbury, resurgent since the appointment of Steve Cotterill as manager, had won their previous two matches at Hull City and Lincoln City by 1-0 scorelines, and repeated that method for a third notable scalp.
It was aptly a defender who scored the decisive goal as Aaron Pierre headed in, early in the second half, to lift his side out of the relegation zone.
Story of the match
Doncaster started well as they chased that Christmas number one but they produced few good hits. The one good move they did put together in the opening stages, when Brad Halliday’s pass was flicked by Matt Smith for Fejiri Okenabirhie to smartly finish, was spoiled by the offside flag.
Shrewsbury were on a good run themselves and fancied another impressive result. Their attacking threat was limited in the first half though, and after one decent spell of pressure they were back to a heavy defensive shift.
Okenabirhie was an inch away from a goal against the side he left for South Yorkshire in the summer but, after collecting a fine Taylor Richards pass, he curled his effort agonisingly wide.
Another piercing move by the hosts saw Smith and Richards find Jon Taylor, but he aimed the wrong side of the post as the Shrewsbury defence of Ro-Shaun Williams, Ethan Ebanks-Landell and Pierre otherwise stood firm and frustrated the ball-hogging Rovers with a succession of blocks and interceptions.
Neither side managed a shot on target in the first half and, although Doncaster had nine of the 10 attempts at it, it was the Shrews who managed the first shortly after the break, and it proved a big one.
Shaun Whalley’s free-kick delivery was met by the head of Pierre, who guided the ball past Joe Lumley into the bottom corner for the Grenada international’s fourth goal of the season and a 53rd-minute lead.
Doncaster’s response was anything but emphatic, as they continued to labour in front of a determined backline. They eventually forced a first save out of Oliver Sarkic from Tyreece John-Jules’ low strike, while skipper Ben Whiteman then drilled a long-distance effort wide.
The visitors had a fantastic chance to double their lead when their first two substitutes combined. Shilow Tracey found Leon Clarke, back from a hamstring injury, on the counter, and the striker smartly lifted his effort over the onrushing Lumley only to see it run wide of the far post.
That meant they would have to grind out the victory, for which they were indebted to one spectacular late save from the otherwise unchallenged Sarkic. John-Jules met a Whiteman cross with a perfect header but the goalkeeper acrobatically palmed it over the crossbar.
Man of the match: Aaron Pierre (Shrewsbury)
Any member of the Shrewsbury backline could have been given this award, but goals win games and Pierre's fourth of the season - making him their joint-top scorer - settled this one alongside the strong shift put in alongside his defensive colleagues.