The visitors went in front against the run of play after 11 minutes through a superb 30-yard shot from Terry Dunfield.
Bradford grabbed an equaliser 10 minutes later through leading scorer James Hanson, who took a short pass from Gareth Evans before tapping the ball into the empty net from the edge of the six-yard area.
The turning point of the game came a minute before half-time when Shrewsbury were awarded a hotly disputed penalty, after Matthew Clarke was judged to have fouled Steve Leslie.
Referee Peter Quinn booked the Bradford defender before Kevin McIntyre scored from the spot and a minute later, Clarke was sent off for a foul on Dave Hibbert.
Hibbert, who spent a spell on loan at Bradford three seasons ago, put the result beyond doubt with Shrewsbury’s third in the 79th minute, after keeper Simon Eastwood had blocked Lewis Neal’s shot.