Fulham suffered their seventh Championship defeat of the season as Sunderland earned their first home win in almost a year.
The Whites looked set to hang on for a point, mainly thanks to an inspired performance by goalkeeper Marcus Bettinelli.
But substitute Josh Maja fired in the winner on his home debut within five minutes of coming off the bench with 14 minutes remaining.
The visitors piled forward in the latter stages but were unable to create a telling chance.
They could easily have been more than a goal down at that stage, with Bettinelli making brilliant saves to twice deny Lewis Grabban and also keeping out efforts from James Vaughan and George Honeyman.
Fulham only managed three attempts on goal with Rui Fonte forcing Black Cats keeper to Robbin Ruiter to tip his strike wide, while Oliver Norwood saw a header go narrowly wide in the first period.
But Sunderland were good value for their first home success since 17 December 2016, when they beat Watford.
Fulham: Bettinelli; Fredericks, Kalas [De La Torre 89], Ream, Sessegnon; McDonald; Cairney, Norwood [Graham 72]; Ojo, Johansen, Fonte [Kamara 78]. Subs not used: Button, Odoi, Djalo, Cisse.
This post was last modified on 26/12/2017