But there was relief in the form of the bottom two, Macclesfield and Hereford, also being beaten so the Bantams remain seven points clear of the drop zone.
Bantams boss Phil Parkinson did not make any changes to his starting line-up following Good Friday’s splendid victory against high-flying Southend United.
The only alteration came on the substitutes’ bench where fit-again Matt Fry replaced Deane Smalley.
In-form Shrews – who remain unbeaten at home in the league this season – started brightest and after Mark Wright had gone close they went in front on 16 minutes.
An inswinging corner from Matt Richards was not dealt with and Jermaine Grandison was on hand to smash the loose ball past goalkeeper Matt Duke.
It should have been 2-0 minutes later, but Terry Gornell inexplicably scooped a shot over the crossbar from barely six yards.
Parkinson made a double change at the break and the Bantams looked much livelier.
A deep free-kick from Rob Kozluk found Craig Fagan unmarked, but he guided a half-volley into the grateful arms of goalkeeper Chris Neal.
James Hanson tried his luck from distance but his shot flew just wide of the target.
The Bantams’ best late chance fell to the unmarked Kyel Reid who perhaps should have done better with a shot from just inside the box.
Shrewsbury Town: Neal, Grandison, Jacobson, Sharps, Cansdell-Sherriff, Wright, Wroe, Collins, Richards, Wildig, Gornell (Morgan 79). Unused substitutes: Smith, McAllister, McLaughlin, Sawyers.
Bradford City: Duke, Ramsden, Flynn (Reid 46), Branston, Jones (Syers 75), Hanson, Ravenhill, Wells (Dagnall 46), Bullock, Kozluk, Fagan. Unused substitutes: Annerson, Fry.
Referee: D Coote (Nottinghamshire).