The visitors pick up their first win in five games to halt Steve Clarke's side's charge for Europe as Romelu Lukaku's second-half strike is not enough to earn a point
The Cottagers went in front courtesy of a 39th-minute Berbatov strike and although Romelu Lukaku put the hosts on terms, Kacaniklic slotted home the winner to hand Martin Jol's side, who were 14th prior to kick-off, a valuable three points.
Steve Clarke made a selection of changes from the team that were beaten by Manchester United on Saturday, with Lukaku replacing Shane Long in attack while Fulham brought in Kacaniklic in place of Kerim Frei.
The visitors started the brighter and enjoyed the majority of the possession although Steve Sidwell could only fire harmlessly over the top with the first meaningful attempt of the game after 12 minutes.
In a contest that was lacking in clear-cut chances Lukaku looked to have a free run at goal after robbing Aaron Hughes on Fulham's right flank, but Sidwell came across in the nick of time to make the challenge just as the Belgium international looked to take aim.
Berbatov then made his mark on the game, having wasted a glorious opportunity to get a shot on target two minutes earlier, as he finished off a flowing Fulham counter-attacking move to give his side the lead in the 39th minute.
Jol's men broke following a West Brom throw-in with the Bulgarian freeing Ashkan Dejagah before the Iranian midfielder jinked inside Liam Ridgewell and pulled the ball back for the former Manchester United star to tuck home past Foster.
The Baggies made a flying start to the second period and were on level terms within five minutes of the restart following great work from Marc-Antoine Fortune and Billy Jones.
The former shrugged off a couple of weak Fulham challenges and released Jones, who cut inside and squared for Lukaku to tap into an empty net, although it was touch and go as to whether the on-loan Chelsea frontman was in an offside position.
And Lukaku then came close to grabbing a second three minutes later as he struck David Stockdale's near post before the home side were denied again three times in quick succession; the former Anderlecht hitman, James Morrison and Chris Brunt all failing to convert.
Those missed chances would come back to haunt Clarke and his side as Fulham regained the lead in the 58th minute courtesy of Kacaniklic.
The former Liverpool youngster demonstrated supreme composure as he latched onto Bryan Ruiz's lofted through-ball and turned inside Baggies defenders Gareth McAuley and Jones before sliding past Foster for 2-1.
Clarke reacted by bringing on Long from the bench and the Republic of Ireland international picked out Lukaku with a pinpoint cross in the 75th minute, but the 19-year-old striker could only direct his header wide.
Fulham had late shouts for a penalty turned down after Youssouf Mulumbu looked to have tripped Ruiz in the box but the visitors held on, despite a shaky moment in stoppage time that saw Hughes clear off the line following Jones' charge into the box, to get their 2013 off to the best possible start.