Shrewsbury, whose defence was breached for the first time in 386 minutes, had their chances with Jake Robinson hitting the post with a firm drive after half an hour.
Cheltenham looked on course for their second home win of the season when the game was turned on its head by a goalkeeping error by Scott Brown.
His attempted clearance hit Dave Hibbert and bounced into the empty net, with the Robins keeper left red-faced in the 72nd minute.
Brown then failed to grasp Lewis Neal's low cross two minutes later, allowing Joss Labadie to stab in the winner. Michael Pook struck a post from 25 yards in the 85th minute for Cheltenham and Phillips made a superb save from Julian Alsop's header.