Micky Adams' men needed to win and hope other League Two results went their way, but virtually nothing went for Vale on a frustrating afternoon.
Kris Bright opened the scoring for the Shrews before Marc Richards hauled the sides level from the penalty spot.
The visitors had already threatened through Shane Cansdell-Sherriff before Bright fired them ahead after 11 minutes with a low drive after he was allowed too much time and space 18 yards out.
Shrewsbury were good value for their lead until Dean Holden conceded a 77th-minute penalty following an unnecessary push on Sean Rigg.
Richards sent Chris Neal the wrong way from the spot to net his 23rd goal of the season, but it was not enough for Vale.