The visitors picked up their first win in five games to halt West Brom's charge for Europe as Romelu Lukaku's second-half strike wasn't enough to earn a point.
The Cottagers went in front courtesy of a 39th-minute Berbatov strike and although Romelu Lukaku had the home side on level terms, Kacaniklic slotted home the winner to hand Martin Jol's side, which was 14th prior to kickoff, three valuable points.
Steve Clarke made a selection of changes from the team that was beaten by Manchester United on Saturday, with Lukaku replacing Shane Long in attack while Fulham brought in Kacaniklic in place of Kerim Frei.
Fulham 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 although 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 counterattacking move to give his side the lead in the 39th minute.
Jol's men broke following a West Brom throw-in with Berbatov 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.
Lukaku came close to grabbing a second three minutes later as he struck David Stockdale's near post before the home side was 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 a 2-1 lead.
Clarke reacted by bringing on Long from the bench and the Republic of Ireland international picked out Lukaku with a pin-point 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 visiting held on, despite a shaky moment in stoppage time that saw Hughes clear off the line following Jones' charge into the box, to get its 2013 off to the best possible start.