The game saw Rovers dominate the first half but fail to score from it and Shrewsbury control the second, yet it was the home side who managed to win it late on from a corner despite spending the half under pressure.
Story of The Match
Tom Bloxham fired the ball across goal for the visitors in the first minute of the game, which Luke Leahy was just about unable to connect with.
Leahy then had a free header at the back post from a flick on, but the Englishman could only put his effort over.
Jordy Hiwula went agonisingly close to opening the scoring for McSheffrey’s side, as he was played in on goal and his shot beat the keeper, but Leahy was there to hook the ball off the line.
Joe Dodoo tried to follow up from the goal line clearance, but he was unable to adjust his feet to score with 15 minutes played.
Lirak Hasani then had a great chance to put Rovers in front, as the ball fell to him from a scramble in the box, but the midfielder could not get the ball under control to score.
Bloxham then had the ball in the net on the other side, but the flag had gone up early to deny him.
Tommy Rowe had a half volley from close range, but Marko Maroši was on hand to tip the ball over the bar to keep The Shrews level.
Dodoo then headed just wide from the resulting corner. Rovers were playing well but needed a goal to show for their good start.
Rovers were unable to get the goal before the break however as The Shrews regained control of the tie before the interval.
It was goalless at the break, with McSheffrey’s side seeing the better chances which they were unable to convert before the break.
Shrewsbury nearly got themselves off to the perfect start after the break as Matthew Pennington headed it on to Leahy, but Jones was there to stop the two defenders combining to give the visitors the lead against the run of play.
Hiwula tried to break forwards for the hosts, but he was unable to sort his feet out in the rain and was tackled.
Hasani avoided scoring a comical own goal when the ball was cleared away, smashing into his face and deflecting back towards goal but it went just behind for a corner.
Ogbeta had a chance to put The Shrews in front, as he headed goalwards from the back post but it was comfortably saved by Lewis Jones.
The Rovers keeper was on hand to keep Pennington out from a set piece minutes later, as he looked to head Shrewsbury in front.
Substitute Aidan Barlow had the chance to make an instant impact off the bench, as he drove at The Shrews' defence and had options left and right but chose to go alone, which turned out to be a poor decision as he was tackled.
In the 67th minute there was another great chance for Steve Cotterill's side to take the lead from a set piece, as a goalmouth scramble was eventually cleared by the hosts.
Jones made an important stop for Rovers to stop a cross making its way to the back post which surely would have given a Shrews player a tap in.
Daniel Udoh had a huge opportunity to give Shrewsbury the lead, as Olowu hesitated to allow the Nigerian a free header from close range, but Jones was there to rescue his side.
Ogbeta then flashed the ball into the box, which Udoh was inches away from connecting with. Cotterill's side were in full control of the second half unlike the first, yet it somehow remained goalless.
There was a goal soon after however, as with 10 minutes to go Olowu headed past Maroši against the run of play from a corner to put Doncaster in front.
Rovers were able to hold on to secure a huge win for them, ending a run of five straight losses and cutting the gap to escaping the drop to three points.
Doncaster Rovers: Jones, Knoyle, Anderson, Olowu, Rowe, Smith (Ravenhill 82'), Hiwula, Dodoo, Galbraith, Horton, Hasani (Barlow 62').
Shrewsbury Town: Maroši, Bennett, Pennington, Nurse, Ogbeta, Daniels, Leahy, Vela, Pyke (Leshabela 82'), Udoh, Bloxham.
Referee: Chris Pollard.