Swansea ended a run of eight Premier League games without a win to climb clear of the relegation struggle and leave Fulham deep in trouble.
Jonjo Shelvey and Chico Flores scored the goals, both aided by wicked deflections past Maarten Stekelenburg.
Shelvey had already hit the bar before his shot struck two defenders en route to the net, while Flores's flicked header went in off Dimitar Berbatov.
Swansea jump to 10th while Fulham languish a point above the drop zone.
Although the two goals conceded could be considered unfortunate, the Cottagers have now let in 50 - comfortably the worst defensive record in the division.
Fulham's defensive frailty
Fulham have kept only one clean sheet in their last 16 Premier League matches and have conceded 50 goals in the competition this season
An approach for
Leicester defender Liam Moore
has been rebuffed in a quiet transfer window for the Londoners, whose only addition of note is the arrival of former player
on a two-month loan from Seattle Sounders.
Instead, Michael Laudrup's ranks were swelled by the return from injury of midfielders Jonathan de Guzman and Shelvey - who
scored the winner
the last time these two sides met - and Nathan Dyer, who was named on the bench.
Given both teams' recent inability to keep a clean sheet, it was something of a surprise that there were no goals in the first period to entertain a full house at the Liberty Stadium.
Wilfried Bony looped a header over, before Shelvey crashed a shot off the Fulham crossbar after being picked out by Pablo Hernandez.
Fulham had good chances, too, Brede Hangeland sent Kieran Richardson's free-kick just over, Ashkan Dejagah contrived to head Alexander Kacaniklic's cross straight at Gerhard Tremmel, while Dempsey also worked the Swans goalkeeper.
Fulham got done - Meulensteen
Stekelenburg in the Fulham goal was called into serious action for the first time soon after the restart, clawing away Flores' header before diving left to field De Guzman's shot.
That persuaded Laudrup to turn the screw, sending on Dyer in place of Hernandez for his first action since being injured on 15 December.
The winger had an immediate impact by teeing up Shelvey for the opening goal, although the ball took a double deflection off Steve Sidwell and Hangeland.
It took a flying stop by Stekelenburg to prevent De Guzman doubling Swansea's lead as the home side continued to dominate.
But with 15 minutes remaining the Fulham keeper was fooled again as Berbatov got the final touch after Flores flicked on De Guzman's free-kick.
Rene Meulensteen sent on Marcus Bent for Dejagah in an effort to rescue something for Fulham and the striker did bring a good low save out of Tremmel.
But it was a rare moment of concern for Swansea who are now looking relatively comfortable in mid-table, while the gloom continues to gather around Fulham.
Substitution Substitution, Swansea City. Jordi Amat replaces Jonjo Shelvey.
Attempt missed. Dimitar Berbatov (Fulham) header from the right side of the six yard box is too high. Assisted by Kieran Richardson with a cross following a set piece situation.
Foul by Angel Rangel (Swansea City).
Alexander Kacaniklic (Fulham) wins a free kick on the left wing.
Corner, Fulham. Conceded by Chico.
Foul by Wilfried Bony (Swansea City).
Scott Parker (Fulham) wins a free kick in the attacking half.
74:59 Goal scored
Goal! Goal! Swansea City 2, Fulham 0. Chico (Swansea City) header from the right side of the six yard box to the bottom right corner. Assisted by Jonathan De Guzmán with a cross following a set piece situation.
Booking Kieran Richardson (Fulham) is shown the yellow card for a bad foul.
Nathan Dyer (Swansea City) wins a free kick on the right wing.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.