Nine-man Swansea surrendered the League Two leadership after Shrewsbury's new boss Gary Peters made a winning start.
Following Jake Sedgemoore's early strike Garry Monk was dismissed after an incident in which referee Eddie Ellans was pushed to the ground.
A minute before the break Swansea went down to nine men when Andy Robinson was sent off after tangling with Darren Moss in a melee near the tunnel.
Dave Walton headed home from a corner nine minutes from time to seal the win.
Shrewsbury: Howie, Moss, Tinson, Walton, Challis, Street, O'Connor, Whitehead, Sedgemore, Lowe, Rodgers.
Subs Not Used: Hart, Ridler, Darby, Edwards, Briggs.
Goals: Sedgemore 21, Walton 81.
Swansea: Gueret, Gurney (Tate 82), Monk, Austin, Ricketts, Forbes (Fisken 70), O'Leary, Martinez, Robinson, Connor (Nugent 63), Trundle.
Subs Not Used: Murphy, Britton.
Sent Off: Monk (43), Robinson (45).
Booked: Ricketts, Monk, Martinez.
Ref: E Evans (Lancashire).