The 11-cap England winger also laid on Sunderland’s other goal as Gus Poyet’s men enjoyed a comprehensive win at Craven Cottage.
Goals from Johnson and Ki Sung-yueng had Sunderland in total control at the break, before Steve Sidwell headed his fifth of the season for Fulham after the turnaround.
Johnson had laid on Sunderland’s second for Ki, before the South Korean returned the favour for the Black Cats’ third.
The Sunderland-born winger then slotted a penalty in the dying stages after Philippe Senderos fouled Jozy Altidore.
Berbatov had two gilt-edged chances in the opening 10 minutes as Fulham settled faster and brighter.
The big Bulgarian barged his way to a clear header from an early corner, only to add no power as he nodded into the ground.
Sascha Riether then robbed Wes Brown before drilling a fine low cross into the area. Half a yard behind the play though, Berbatov was just not quite sharp enough to control.
The ball bobbled into touch on the other side of the field, and with it went Fulham’s first-half opportunities.
Buoyed by avoiding early censure the Black Cats started to build a foothold. Riether had to move smartly to cut out Fabio Borini’s neat through-ball, denying Jack Colback a sight of goal, and Phil Bardsley’s 20-yard shot was tipped away by Stockdale.
Steven Fletcher then headed over after John O’Shea nodded back across goal from a well-worked Johnson free-kick.
Riether’s near-post flick-on evaded any Fulham team-mate as the hosts battled to regain the ascendancy.
And Adel Taarabt rejected the smart positioning of both Berbatov and Clint Dempsey to try a tricky near-post effort that Vito Mannone was more than wise to.
Berbatov’s acrobatic effort came to nought as well, as Fulham failed to generate any cast-iron opportunities in their second spell of dominance.
It was all too short-lived for Rene Meulensteen’s men though, as Sunderland pinched the lead thanks to Johnson’s curling free-kick.
Sidwell was incensed referee Mike Dean even awarded the foul, with Johnson capitalising on minimal touch to go down 20 yards out.
Stockdale will certainly feel he should have tipped Johnson’s shot around his left post though, after getting a glove to the accurate effort.
Fulham’s second-choice goalkeeper then spilled a Sunderland cross, only for Fernando Amorebieta to head Marcos Alonso’s shot clear.
Sunderland’s pressure told again when Johnson’s low free-kick reached Swansea loan man Ki, who finished courtesy of a Senderos deflection.
Taarabt wasted a promising free-kick to open the second half, before Riether flashed the ball across goal, only for Mannone to claim.
Duff’s pinpoint corner delivery dragged Fulham back into the contest, though, with Sidwell sneaking free to nod home.
Senderos had to mop up as Stockdale made a brave call to come out of his area for a clearance, only for Fletcher to put him under pressure.
The match opened up with both sides sensing their time to strike. And Sunderland made the most of a lightning break to steal control again.
Racing through a sparse midfield with Fulham over-committed, Ki bided his time and threaded a superlative ball through to the onrushing Johnson.
The former Manchester City midfielder slotted past the motionless Stockdale to reassert Sunderland’s dominance.
And with time running out Johnson rolled a penalty past Stockdale, after Senderos left a leg hanging out to take down Altidore.