Chilean striker Willy Topp inspired Bradford to a thrilling win to extend their unbeaten run to five games.
Topp set up Kyle Nix for the opener in the seventh minute before Omar Daley made it 2-0 with a deflected shot.
Dave Hibbert reduced the deficit with a header before Peter Thorne restored the advantage by steering in Daley's ball.
The Shrews made it 3-2 through Marc Pugh before Barry Conlon scored from the spot after Darran Kempson fouled David Wetherall.
Bradford: Loach, Starosta, Wetherall, Clarke, Heckingbottom, Daley (Colbeck 80), Penford (Evans 76), Bullock, Nix, Thorne, Topp (Conlon 58).
Subs Not Used: Williams, Rhodes.
Goals: Nix 7, Daley 40, Thorne 57, Conlon 85 pen.
Shrewsbury: Garner, Herd (Darren Moss 86), Langmead, Kempson, Tierney, Humphrey (Hibbert 46), Hall, McIntyre (Hunt 87), Davies, Pugh, Madjo.
Subs Not Used: Jones, MacKenzie.
Booked: Herd, McIntyre.
Goals: Hibbert 48, Pugh 65.
Ref: Neil Swarbrick (Lancashire).