The goalkeeper, making a first start in 11 months in place of the injured Mark Schwarzer, produced a second-half blunder when dealing with a back-pass to allow Swansea to take a two-goal lead.
Jonathan de Guzman was the man to score from Stockdale's mistake at Craven Cottage, which added to Danny Graham's first-half opener.
And that left Fulham with too much to do, meaning Bryan Ruiz's later close-range effort was just a consolation in an alarming run of just one win in 12 Premier League games.
That leaves Martin Jol's team looking nervously at the relegation zone while Michael Laudrup's Swansea ended their four-game winless streak.
The punishing festive schedule seemed to be behind both managers' decisions to ring the changes to their starting line-up, Fulham making six and Swansea seven.
Dimitar Berbatov probably should have scored in the 10th minute when he outmuscled his marker six yards out only to volley Ruiz's corner into the ground and over the crossbar.
But the opening goal then came from a mistake in the 19th minute, when Nathan Dyer scuffed a deflected cross, Stockdale should have palmed clear and Graham readjusted to finish.
After half-time Ruiz almost got the better of motionless Swansea goalkeeper Gerhard Tremmel when his latest free-kick curled inches wide.
But Stockdale produced another gaffe in the 52nd minute when he cleared the ball straight against Brede Hangeland and it rebounded for Pablo Hernandez to square for De Guzman to side-foot home.
Tremmel was then finally beaten in the 56th minute in controversial fashion.
Berbatov headed Frei's cross against the crossbar and his follow-up was blocked straight to Ruiz, whose point-blank finish was going in but hit an offside Sascha Riether on the way.
Fulham pushed for an equaliser but the home side's misery was duly complete when Berbatov sent a stoppage-time header off target.