Fulham require a big second half effort after conceding two soft goals from set-pieces against their relegation rivals.
The Whites began on the front foot but Dimitar Berbatov fluffed the biggest chance on eight minutes, slicing wide from Sascha Riether’s cross.
Sunderland, who had been happy to sit back early on, soon took a foothold and went in front when Johnson curled a free-kick through the grasp of Fulham keeper David Stockdale.
The Premier League’s basement club doubled their lead just before the break as Johnson pulled a free-kick back for Ki Sung-Yeung, who fired through a crowd of players.
Fulham will be disappointed they didn’t make their possession and territory dominance count early on.
Berbatov, who had earlier mistimed a header from a corner and sent it straight at Vito Mannone, somehow managed to squander what transpired to be Fulham’s best chance, after Riether’s cross had found the Bulgarian unmarked.
Phil Bardsley saw a deflected low drive pushed away by Stockdale in Sunderland’s first chance but Fulham continued to look the better side.
Adel Taarabt blasted a shot straight at Mannone after jinking into the penalty area when he perhaps should have squared it.
Sunderland took the lead on 28 minutes when Johnson was adjudged to have been fouled by Steve Sidwell 20 yards out and the former Manchester City winger beat Stockdale.
John Arne Riise then gave away the free-kick from which Ki scored, with Fulham slow to react to Johnson’s cut back.
Fulham: Stockdale; Riether, Senderos, Amorebieta, Riise; Duff, Parker, Sidwell, Dempsey; Taarabt; Berbatov.
Subs: Kasami, Kačaniklić, Richardson, Hughes, Dejagah, Etheridge, Bent.