Shrewsbury held off a late Port Vale fightback to go third in League Two with their fifth win in six games.
Marvin Morgan curled in from 15 yards and Mark Wright finished coolly after racing on to Joe Jacobson's pass as Town took an early 2-0 lead.
Ben Williamson lobbed over Ben Smith for his first Vale goal but Lionel Ainsworth hammered home Wright's cross to restore the visitors' advantage.
Williamson headed in a late second from six yards but Shrewsbury held on.
VIEWS FROM THE DRESSING ROOM
Port Vale boss Micky Adams told BBC Radio Stoke:
"We didn't play well, it's as simple as that. I won't stand here and try and kid anybody that we played well because we didn't.
"We started the game very poorly and were 2-0 down before we had got going.
"We didn't give up but we were not at the races. We were beaten by a better team who had better individuals on the day."
Port Vale 01 Martin 02 Yates 05 McCombe (McDonald - 49' ) 06 Owen 20 Green (Loft - 64' ) 03 Taylor Booked 04 Griffith 14 Roberts Booked 08 Dodds Booked (Morsy - 72' ) 11 Pope Booked 19 Williamson Substitutes 12 Tomlinson 25 McDonald 07 Loft 18 Morsy 27 Little Shrewsbury 25 Smith 02 Grandison Booked 03 Jacobson 06 Cansdell-Sherriff (Goldson - 20' ) 12 Hazell 04 McAllister 07 Wright 08 Wroe 16 Ainsworth (Richards - 87' ) 09 Collins (Bradshaw - 79' ) 10 Morgan Substitutes 01 Neal 18 Goldson 14 Richards 23 Taylor 17 Bradshaw
Ref: Phil Gibbs