A 50th-minute goal from Steven Fletcher opened the scoring before substitute Mladen Petric levelled for the hosts. Sunderland then scored twice within seven minutes of Petric's equaliser, through Carlos Cuellar and Stephane Sessegnon, to pick up only their second win at Craven Cottage in the Premier League era.
A rare, misplaced pass from Giorgos Karagounis saw Sunderland captain Cattermole take possession and the former Wigan man looked to take on Hangeland before being caught by the Norway international and referee Lee Probert showed no hesitation in producing the red card.
Fulham reacted well and Berbatov should have put the home side ahead when he was picked out in the area by Damien Duff, but the Bulgarian could only fire a side-footed shot straight at Simon Mignolet.
The visitors were ahead as Adam Johnson's perfectly weighted pass found Fletcher rushing through on Mark Schwarzer's goal and the Scotland international made no mistake as he slid the ball calmly into the corner of the goal.
The open nature of the game meant that Fulham were always going to create chances and they finally took one just after the hour as Duff just stayed onside and took advantage of a static Sunderland defence to find Petric, who finished past Mignolet to level the game.
Fulham's bad luck continued as Petric had to leave the pitch to receive treatment and Sunderland took full advantage against nine men to regain the lead just two minutes after being pegged back. Larsson floated in a corner that was headed beyond the outstretched hand of Schwarzer by Cuellar for the Spaniard's first goal for the club.
The points were secured five minutes later with Sunderland's third goal. The visitors broke forward at pace and went 3-1 up after a fantastic individual effort from Sessegnon as the Benin international cut in from the left before arrowing an unstoppable effort past Schwarzer.