Marc-Antoine Fortune struck early on for the away side, before Romelu Lukaku and Shane Long extended the lead, with three players seeing red in an ill-tempered second half
Marc Antoine-Fortune's scrappy opener gave the visitors the lead after six minutes, with three Artur Boruc saves preventing Romelu Lukaku from adding to the scoreline.
The Baggies added two more after the break by picking off Saints on the counterattack, with Gaston Ramirez, goalscorer Fortune and Danny Fox also receiving red cards in an eventful half.
Mauricio Pochettino kept with the same Saints team that drew with Swansea last time out, Luke Shaw missing out with a fresh injury after recovering from a virus and Morgan Schneiderlin passed fit in time.
Steve Clarke was without suspended Youssuf Mulumbu and injured Chris Brunt, with Billy Jones only fit enough for the bench, so Steven Reid and Shane Long returned while Liam Ridgewell also replaced Goran Popov.
The Baggies almost took an early lead when Lukaku broke free of Jos Hooiveld but Boruc made a fine stop to deny the Belgian in the one-on-one. However, Fortune was able to put the visitors ahead from the resulting corner after a goal-mouth scramble in which Boruc and Nathaniel Clyne failed to clear the ball.
And despite a good reaction from the hosts it was Clarke's men who almost struck again around the 20 minute mark. James Morrison and Graham Dorrans combined excellently to work the ball through to Lukaku once more, but Boruc got down low to make another good save when the forward should have done better.
Saints continued to dominate possession but found clear-cut chances hard to carve out against a solid Baggies defence, Rickie Lambert and Jay Rodriguez both heading over and Nathaniel Clyne seeing a strike deflected over when he should have tested the keeper.
Lambert also fired narrowly off-target with a free kick, but the home side lacked any real penetration and were almost punished by a second Baggies goal as Boruc once again denied Lukaku just before the half-time whistle.
Saints boss Pochettino made a bold move at the break as he looked to inject some creativity into his side, bringing attacker Gaston Ramirez on for the more defensive Jack Cork. The opening 10 minutes were much the same, though, before Clyne broke forward and hit the bar with a powerful strike from a tight angle.
However the hosts continued to struggle in attack and it was West Brom that got the second goal. Lukaku was finally able to beat Boruc by rounding the keeper and finishing into the empty net after Fortune's through ball.
Soon after the goal, Ramirez, brought on at the break, made Saints' challenge even harder by getting sent off for sending a stray elbow into the face of Shane Long. Baggies attacker Fortune also received a red card for an angry reaction in which he raised his arm.
Lambert may have hit back soon after if it wasn't for a poor touch, before Schneiderlin denied Morrison with a fine sliding tackle, but Saints could do nothing to stop Long bagging a third with just over 10 minute remaining. The striker was played in beyond the Saints defence and finished through Boruc's legs.
There was more late drama as Saints full-back Fox was also given a straight red card for a wild lunge on Steven Reid in the latter stages of the game.