Saido Berahino and Gareth McAuley were on target as Albion battled to their third Premier League victory of the season against struggling Crystal Palace.
The Baggies were disjointed at times but had enough quality to see off the rock-bottom Eagles with substitute Berahino firing them ahead on the stroke of half-time and McAuley heading the second seven minutes from the end.
Berahino’s goal was his first in the Premier League at The Hawthorns just days before he is expected to sign a money-spinning new contract.
Albion made the early running and former Baggies defender Danny Gabbidon hacked clear from a Youssouf Mulumbu cross before Joel Ward blocked an attempted overhead kick from Stephane Sessegnon.
But Palace posed a threat on the break and Boaz Myhill in the Palace goal had to make a smart near-post save to beat away a dipping volley from Adlene Guedioura.
And Mulumbu had to make a crucial interception to help out the recalled James Morrison after the Scotland international gifted possession to Marouane Chamakh.
But the game then became disjointed and both teams were forced into an early change.
First Guedioura landed heavily as he challenged Myhill for a high ball and had to leave the field on a stretcher to be replaced by Jason Puncheon.
And then Billy Jones appeared to pull a hamstring while attempting a cross and had to make way for Berahino, who slotted in wide on the right with Morgan Amalfitano moving to right-back.
The game looked to be drifting towards stalemate at half-time, but in the final minutes of normal time when Berahino struck his first Premier League goal at The Hawthorns.
Chris Brunt’s first-time pass released Sessegnon on the left and he took his time before teeing up Berahino for a crisp, left-footed finish from 15 yards out.
And deep into stoppage-time, Berahino tried his luck again with a powerful 20-yard effort with his right foot that Julian Speroni parried.
Albion might have doubled their lead early in the second half when Amalfitano galloped forward on the overlap and collected Berahino’s pass before whipping a dangerous ball across the face of goal.
But Ward intercepted to deny Sessegnon a header at goal.
And Gabbidon made another vital block just before the hour-mark to keep out a shot from Amalfitano after a Brunt free-kick was palmed away by Speroni.
On 61 minutes Palace had a rare chance when Puncheon saw his left-footed shot from inside the box deflect off Jonas Olsson, forcing Myhill into a smart save.
And there was another scare for the hosts when some sloppy defending allowed a Chamakh cross to fly across the face of goal, with Albion fortunate no Palace player could apply the finishing touch.
Albion should have made it 2-0 on 74 minutes when Berahino weaved his way through the Palace defence and teed up Shane Long, but he dwelled on his shot and Dean Moxey made a superb saving challenge.
And with 12 minutes remaining, Brunt missed an excellent chance when he side-footed wide with his right foot after a clever pass from Amalfitano and a good cross by Sessegnon.
Albion needed a second goal to settle the nerves and it came with seven minutes remaining.
Brunt’s flat, powerful corner was met by McAuley, who rose above Mile Jedinak to head home.
In the dying seconds Thomas’s miss-hit cross for Palace turned into a dangerous lob which Myhill had to palm away athletically.
West Brom boss Steve Clarke said "It wasn't a classic but most important thing today was always the result. It wasn't a great spectacle and conditions were difficult.
"We did more than enough to win and the only disappointment was not getting the second goal earlier.
"I like to be positive with substitutions. Saido's been ready since I left him out! He took goal well. Morgan did well at full-back."