Skipper Matt Holland's first-half goal helped Charlton claim a deserved first Premiership victory of the campaign outside London.
Holland shot through a crowded box on the half-hour after West Brom failed to clear Danny Murphy's free-kick.
Albion were second best for much of the game, and their best chance came when midfielder Zoltan Gera headed wide.
Shaun Bartlett missed a good chance to increase Charlton's lead as West Brom were left without a win in nine games.
Without the injured Jonatan Johansson, boss Alan Curbishley hoped to lift the Addicks' dismal form outside the capital by deploying Bartlett up front in a 4-5-1 formation - and it paid dividends.
The visitors soon tested a Baggies defence bereft of injured skipper Darren Moore with a series of corners, free-kicks and long throws.
Jerome Thomas went looking for a penalty early on when he ran into Bernt Haas, but referee Chris Foy was not moved to either award a spot-kick or caution Thomas for diving.
Gera and Robert Earnshaw looked lively for Albion, but were mostly restricted to long-range efforts which failed to trouble Dean Kiely, while Neil Clement thumped a free-kick into the wall from a good position.
Murphy then cleared another Clement effort off the line following a corner and Charlton broke with a swift attack through Dennis Rommedahl, which was cleared for a corner.
The visitors finally made their pressure tell when Gera brought down Luke Young on the right touchline.
The resulting free-kick from Murphy was only headed out as far as Holland, who was on hand to drive home his first goal of the season on the half-volley from just inside the area.
West Brom nearly managed an instant reply when Gera flashed a header wide of the post from a Bernt Haas cross a minute later.
Charlton's massed ranks denied the home side space around the box, but they were also able to switch defence into attack at speed.
Rommedahl soon fed Murphy but the ex-Liverpool man volleyed wide just before the interval.
The Addicks still looked the stronger side after the interval, with Murphy hitting the side netting from six yards out.
And Bartlett should have done better when Thomas picked him out in the box, but the South African mis-kicked his volleyed effort wide when it looked easier to score.
Less than 10 minutes into the second half, boss Bryan Robson replaced Cosmin Contra - who failed to make much of an impression on his return from injury - with Jason Koumas.
The switch seemed to lift Albion, but Jonathan Fortune and Hreidarsson combined well to clear the danger after Darren Purse flicked on towards Earnshaw.
Kiely also needed to be alert to claim a Haas cross-shot at the second attempt with Earnshaw lurking.
Kanu then had a shot deflected onto the roof of the net by Young - while Gera was unable to direct another header on target after Jonathan Greening crossed well from the left.
Charlton still threatened on the break, and Bartlett blazed an effort wide after cutting in from the left.
In the dying minutes, Kanu nearly picked out substitute Geoff Horsfield, but he was denied by an important Radostin Kishishev block as the Addicks held on.
West Brom: Hoult, Haas, Scimeca, Purse, Clement,
Contra (Koumas 55), Johnson, Greening, Gera (Horsfield 88),
Subs Not Used: Gaardsoe, Hulse, Kuszczak.
Charlton: Kiely, Young, Fortune, El Karkouri, Hreidarsson,
Rommedahl (Konchesky 65), Kishishev, Holland, Murphy,
Thomas (Hughes 85), Bartlett.
Subs Not Used: Euell, Jeffers, Andersen.
Goals: Holland 30.
Ref: C Foy (Merseyside).