The Cottagers had slid towards the bottom three after winning only one of their previous 12 games but were well worth their second away success of the campaign.
Dimitar Berbatov's seventh goal of the season gave the Cottagers a half-time lead, and although Romelu Lukaku levelled after the break, Kacaniklic restored the visitors' advantage.
Gabriel Tamas glanced a header wide from a Brunt corner before Berbatov wasted a golden opportunity. A mistake by Brunt left the former Manchester United player with a clear run towards Ben Foster but he shot over the bar.
But Berbatov made amends after 39 minutes by putting Fulham ahead. Ashkan Dejagah turned inside Liam Ridgewell before squaring the ball across the box to Berbatov, whose first time shot flew past Foster.
Lukaku needing only three minutes of the second period to bring West Brom on level terms. Marc-Antoine Fortune spread the ball out wide to Billy Jones, who skipped past Steve Sidwell before centring for Lukaku to make no mistake from close range.
The home side were revitalised and Lukaku held off Aaron Hughes before crashing a rising shot against the outside of a post.
But after 57 minutes Fulham regained the lead against the run of play through Kacaniklic's third goal of the season. Bryan Ruiz played a lofted ball forward to Kacaniklic on the edge of the box and he checked back inside before firing home.