Capital One Cup winners Swansea had taken the lead through former Baggies player Luke Moore’s second goal in two games.
But Romelu Lukaku’s fourth goal in three matches levelled the scores before half-time prior to the on-loan Chelsea striker seeing a penalty saved by Michel Vorm after the break.
Jonathan De Guzman’s own goal then proved to be the winner but Swansea were furious after a last-gasp Roland Lamah strike was incorrectly ruled out for offside.
Swansea had started in confident fashion and Michu missed an early opportunity to break the deadlock when poking Pablo Hernandez’s cross over the crossbar.
It then came as no surprise when Moore celebrated his first start since Boxing Day by opening the scoring against his former club with a glancing header from De Guzman’s corner.
But Albion hit back and Lukaku levelled after 40 minutes with his 13th goal of the campaign after meeting Graham Dorrans’ low cross.
But Lukaku blotted his copybook after Albion were awarded a 56th minute penalty for a challenge on James Morrison by Wayne Routledge just inside the box, with the poor spot-kick saved by Vorm.
The Baggies, though, were not to be denied and an own goal from De Guzman put them ahead four minutes later.
Swansea substitute Lamah then had the ball in the net in the 87th minute but it was ruled out for offside, although the ball appeared to hit defender Gareth McAuley.