West Ham were nearly made to pay for wasting a hatful of chances as Teddy Sheringham's goal saw off West Brom.
They ran West Brom ragged in the first half with Yossi Benayoun and Sheringham going close, but somehow the game was goalless at half-time.
Near the hour mark Sheringham netted Christian Dailly's knock-down from close range but West Brom rallied well.
Substitute Geoff Horsfield added punch and Diomansy Kamara wasted a good chance as West Ham were made to sweat.
Marlon Harewood, Anton Ferdinand and Sheringham all went close early on as West Ham began aggressively.
Kamara carried most threat for the visitors but selfishly wasted West Brom's first decent chance, shooting wide while Robert Earnshaw stood unmarked nearby.
Baggies keeper Tomasz Kuszczak did well to deny Benayoun a one-on-one chance as West Ham dominated but failed to turn their advantage into goals.
Only the late intervention of Martin Albrechtsen stopped Sheringham's raking cross reaching Benayoun at the far post as West Ham laid siege to the Baggies' goal but somehow failed to find the net in the first half.
Shortly after the restart West Ham keeper Shaka Hislop had to be quick to deny Kanu, and in the process suffered a head injury that later saw him taken off.
Just as home fans were wondering if it was destined not to be their day, substitute Christian Dailly knocked the ball down into Sheringham's path for the veteran to put West Ham ahead.
The home side eased off somewhat after Stephen Bywater replaced the injured Hislop, as West Brom ended the game in the ascendancy.
Substitutes Horsfield and Kevin Campbell added threat as West Ham's defence came under increasing pressure and the final whistle was a welcome relief for home fans.
West Ham boss Alan Pardew:
"The first half we were at our fluent best so to come in at 0-0 was a blow. Once we scored we had to show the other side of our game and dig in.
"Teddy's performance was the highlight of the game, he's 39 but I didn't think of subbing him, he was that important.
"He's a very important person, not just a player, at the club. He was essential in more ways than one."
West Brom manager Bryan Robson:
"If we keep playing like that, we will win more than we lose. It's disappointing to have so much of the play and still lose.
"But when you are as a dominant as that, you should have something to show for it, so it was bad play on our part.
"Diomansy Kamara lacked composure and his decision-making was poor."
West Ham: Hislop (Bywater 60), Repka, Ferdinand, Gabbidon, Konchesky, Benayoun (Newton 90), Reo-Coker (Dailly 45), Mullins, Etherington, Sheringham, Harewood. Subs Not Used: Bellion, Zamora.
Booked: Dailly, Mullins.
Goals: Sheringham 57.
West Brom: Kuszczak, Watson, Curtis Davies, Clement, Albrechtsen, Kamara, Wallwork, Inamoto, Greening, Kanu (Campbell 84), Earnshaw (Horsfield 74). Subs Not Used: Hoult, Moore, Carter.
Att: 34,325
Ref: P Walton (Northamptonshire).