Tom Nichols scored in stoppage time as Exeter came from 2-0 down to end Shrewsbury’s run of six successive League Two wins.
James Collins gave the Shrews a two-goal lead with a long-range strike and a tap-in.
Nichols reduced the deficit when he turned in Matt Grimes’ cross, with David Wheeler heading the equaliser.
Nichols nodded over keeper Jayson Leutwiler for the winner to lift Exeter to ninth in the table.
Shrewsbury Town manager Micky Mellon told BBC Radio Shropshire:
“The disappointing thing today is that we have three big centre halves who have been brilliant all season – but today we weren’t close enough to people.
“To get to the second half with a two goal lead and lose an early goal so easily, when you are playing three centre backs, that was not good enough.
“Credit to Exeter who have thrown everything at us, to turn around a two goal lead and score three times in the second half is something you can’t afford to let slip through your hands.
“It’s difficult to blame the whole group of players from our point of view – but today we were a bit loose in the box and we got punished for it.”