Bristol Rovers scored twice for the first time in half a dozen games to take three important points.
But in a game that took time to shake off a crabby attitude they had to endure four turbulent minutes of added time as Shrewsbury stormed back.
The three goals came in a 13-minute spell around half-time and Rovers, who went in with a two-goal advantage, were then forced onto the back foot by the visitors.
As a contest it only came to life after the first goal. Both sides circled each other cautiously with Shrewsbury looking dangerous from free-kicks around the box.
From one, Neil Ashton, who had been fouled, curled his kick across Scott Shearer, the Rovers keeper, without finding the touch of luck needed to keep the ball inside the post.
Rovers were finding it hard to get past the Shrewsbury back four although Richard Walker and Craig Disley each won corners.
The opener came from the fifth of them. It was played short between Stuart Campbell and Ali Gibb. The extra angle enabled Campbell to drop the ball into the six-yard box where Junior Agogo put a cheeky back-heel onto the bar.
As it dropped, Disley was there to thrust it over the line to bring the first goal in four matches between these two sides.
Nine minutes later and into first-half injury-time, a penalty cemented Rovers' lead.
Again it was a Campbell ball swinging in from the left. This one was much deeper and Rovers centre-back Steve Elliott was pulled down by Richard Hope as he went for it.
Agogo thumped the penalty high to Joe Hart's right but not before a bizarre intervention from the referee's assistant. He wanted the kick delayed because Hart was standing behind his line.
Hope missed the second half with a head injury but Shrewsbury shook off the enforced change as they began to chase the game with some style.
They pulled a goal back within five minutes through Duane Darby but couldn't quite find that extra strike to claim a point.