Stuart Armstrong's first Southampton goal gave Saints the lead at Craven Cottage but Aleksandar Mitrovic headed the home side level on 33 minutes.
Andre Schurrle put Fulham in front before half-time from Ryan Sessegnon's superb cross. But Southampton pulled level when Armstrong scored his second goal after the break.
Mitrovic restored Fulham's lead, volleying in his second from Sessegnon's flick-on with 27 minutes remaining, and Fulham hung on to climb off the bottom of the table with eight points.
Southampton stay in 17th, ahead of Fulham on goal difference only.
Fulham: 2 Dec v Chelsea (A)
Southampton: 1 Dec v Man Utd (H)