Paul Parry’s first-half winner broke Walsall hearts as the Saddlers suffered derby defeat for the first time in 19 years.
The midfielder pounced on 25 minutes after Asa Hall’s effort hit the bar to thwart the Saddlers as their early domination was wiped out. Jamie Paterson, Adam Chambers and Florent Cuvelier were all denied by the excellent Chris Weale in the Shrews goal.
The keeper then kept the Shrews ahead with a second half save from George Bowerman with Andy Butler also hitting the bar for the Saddlers.
Parry struck the woodwork in an open second half but the Shrews inflicted a third straight League One defeat on Walsall for their first derby win since 1993.
Chambers returned after six weeks out with a hamstring injury while Dean Holden and Bowerman also started.
And the Saddlers threatened to run riot in the opening 20 minutes with only Shrews keeper Weale ensuring the hosts were not buried.
Paterson’s angled drive was pushed away after five minutes before Chambers missed a guilt-edged chance to open the scoring a minute later.
Bowerman’s dummy out-foxed the Shrewsbury defence to leave Chambers clean through but Weale smothered his effort and Bowerman skied the rebound over.
The over-worked goalkeeper then turned Bowerman’s effort away as the Saddlers dominated the early stages.
Cuvelier was running amok in a free-role behind Bowerman and on 13 minutes he almost put the Saddlers ahead from the edge of the area but ahead saved Shrewsbury with a fingertip save.
It was all Walsall as the snappy Saddlers controlled their hosts – before Shrewsbury took a shock lead on 25 minutes.
Marvin Morgan was thwarted by Holden but from the resulting corner the striker headed down for Jermaine Grandison to feed Hall, he hit the bar and Parry hooked in the rebound.
The shell-shocked Saddlers struggled to respond instantly as Shrewsbury settled, comforted by their lead.
Goalkeeper Karl Darlow was a spectator but the visitors went into half time behind.
Butler’s shouts for a penalty after seemingly being shoved by Lee Collins 10 minutes into the second half went unanswered as Shrewsbury upped their tempo.
Jon Taylor’s shot was blocked by Holden before Butler cracked a header against the underside of the bar after Ashley Hemmings’ cross on the hour.
Suddenly the game opened out and Bowerman broke onto Richard Taundry’s pass only to his effort saved by the outstanding Weale.
The Shrews immediately broke with the bustling Morgan bullying through to find Parry – whose 15-yard effort smacked the bar.
Matt Richards’ free kick was then saved by Weale as both teams ran out of steam and the Saddlers couldn’t conjure an equaliser.