Sam Allardyce's men recovered from Craig Dawson's early opener to earn a victory that keeps them in the top six and leaves the Baggies hovering above the relegation zone
Craig Dawson gave the Baggies the lead 10 minutes in when he met a Graham Dorrans free-kick with a firm header, but Kevin Nolan levelled when he followed up Ben Foster's save from an Andy Carroll overhead-kick on 35 minutes.
And Tomkins got what proved to be the winner on the stroke of half-time when he rose above Dawson to head home Stewart Downing's pinpoint corner delivery.
Struggling West Brom ramped up the pressure in the second half, with Victor Anichebe causing several problems, but they lacked the quality to score a second goal.
West Ham remain fifth - one point below Manchester United - despite their win, but are entrenched in the top half of the table after their fifth win in eight matches.
Buoyed by his side’s impressive, albeit fruitless, display against Arsenal on Saturday, West Brom boss Alan Irvine included Saido Berahino and Anichebe from the start in an attacking line-up, while Chris Baird replaced the injured Sebastien Pocognoli at left-back.
Baird's free-kick fell invitingly for Nigeria international Anichebe in the seventh minute, but his effort was deflected over, before a succession of set-pieces and West Brom pressure ultimately led to Dawson's opener.
Graham Dorrans' well-placed free-kick was met powerfully by the head of the defender, with West Brom goalkeeper Adrian, who came off his line, well beaten.
Dorrans then fired over before a strike from ex-West Brom midfielder Morgan Amalfitano, which was excellently blocked by Joleon Lescott, finally awoke the visitors from their slumber.
Nolan's bicycle-kick was well saved by Ben Foster before West Ham levelled 10 minutes from the interval, as the rebound from Andy Carroll's fierce overhead effort - which was also kept out by the West Brom goalkeeper - was headed in from close range by the skipper.
Sam Allardyce's men turned the screw and Cheikhou Kouyate had a curling effort turned behind by Foster, while Chris Brunt hobbled off for the hosts, replaced by Youssouf Mulumbu.
And West Ham capped off their first-half turnaround when, in the third minute of stoppage time, Tomkins climbed above Dawson at the back post to nod Stewart Downing's corner across the face of goal and in.
Dawson had a glorious chance to double his tally eight minutes into the second half when Lescott's header was completely missed by Berahino, but the defender, who took a touch, could only shoot just wide from 12 yards.
Two half-chances for Berahino kept the home fans interested, and West Ham were beginning to feel the pressure when Adrian did well to keep out a powerful left-footed strike from Anichebe on the turn.
Anichebe was a constant threat and headed at Adrian in the 74th minute, while Irvine showed his intent by bringing on forwards Silvestre Varela and Brown Ideye.
Adrian then produced a magnificent save with his legs to keep out Anichebe, and Dorrans acrobatically shot wide as West Ham defended desperately - which was ultimately enough to seal the victory.