Michael Laudrup's side raced into a two-goal lead before the hosts hit back through Bryan Ruiz, but the defeat now leaves the Cottagers without a win in their last four games
The visitors went ahead through Danny Graham's bicycle kick following some good work down the right from Angel Rangel and Nathan Dyer after some sloppy goalkeeping from David Stockdale.
Swansea doubled their lead after the interval with Jonathan De Guzman passing into the net from outside the box after Pablo Hernandez picked up the ball after a woeful clearance from Stockdale, before Bryan Ruiz prodded home after a goalmouth scramble shortly afterwards.
Fulham manager Martin Jol made six changes to the side that drew with Southampton on Boxing Day, with Stockdale, Brede Hangeland, Matthew Briggs, Giorgos Karagounis, Kerim Frei and Bryan Ruiz all called into the starting line-up.
Swansea boss Michael Laudrup also rang the changes from the team's last game, away at Reading, making seven with Gerhard Tremmel, Pablo Hernandez, Garry Monk, Rangel, Kemy Agustien, De Guzman and Graham all coming in, and the Premier League's current top goalscorer Michu missing out with an ankle injury.
After a lively opening from both sides, it was Swansea who grabbed the first goal in the 18th minute through Graham, after Stockdale palmed out Dyer's tame effort for the forward to acrobatically turn the ball home.
The hosts almost responded immediately, with Frei flashing a vicious strike right across goal after collecting Sascha Riether's cross from the right, before the impressive Ruiz brought a smart stop out of Tremmel after trying to curl an effort into the far corner from outside the box.
After the break, Ruiz went close once again with a free kick from the edge of the area which just clipped the post on its way out of play.
Swansea raced into a two-goal lead in the 52nd minute through De Guzman after yet another Stockdale howler, with his poor clearance hitting Hangeland before Hernandez latched on to the loose ball and squaring it to the Dutchman to coolly slot home.
Fulham grabbed a goal back to get themselves back into the game in the 55th minute with Ruiz the scorer following a goalmouth scramble. After a Berbatov header was tipped onto the bar, the Costa Rica international tapped in unmarked in the six yard box, despite suspicions that Riether may have got a touch on it from an offside position before it went in.
With the game becoming increasingly open, Frei tested Tremmel with a sweetly-hit volley from outside the area, with Berbatov seeing a goal correctly disallowed for offside after the goalkeeper parried Karagounis' effort from distance.
Despite Swansea struggling to clear their lines during a nervy close to the game, Fulham failed to create any genuine clear-cut opportunities and the visitors went on to claim all three points.