Yeovil chalked up a seventh successive league win to go top of the table.
Darren Way's low shot gave the home side a first-half lead, only for Chris Weale to concede a 63rd-minute penalty which Jake Sedgemore converted.
Yeovil's Colin Miles was then sent off, and Shrewsbury went ahead through David Edwards' long-range strike.
Luke Rodgers then saw red for the Shrews, Paul Terry headed Yeovil level, before Adrian Caceres' shot, and Kevin Gall's right-footed effort won it.
Yeovil: Weale, Lindegaard, Skiverton, Guyett (Reed 66), Miles, Gall, Way, Terry, Stolcers, Jevons (Davies 66), Tarachulski (Caceres 77).
Subs Not Used: Collis, Mirza.
Sent Off: Miles (72).
Booked: Stolcers, Terry.
Goals: Way 34, Terry 78, Caceres 84, Gall 89.
Shrewsbury: Howie, Whitehead, Tinson, Ridler, Challis (Lyng 83), Edwards, Sedgemore, Tolley, Aiston (O'Connor 56), Grant (Rodgers 45), Langmead.
Subs Not Used: Lowe, Hart.
Sent Off: Rodgers (76).
Booked: Sedgemore, Aiston, Langmead.
Goals: Sedgemore 64 pen, Edwards 74.
Ref: J Singh (Middlesex).