Manchester United inledde bra och redan efter tre minuter fick Romelu Lukaku en bra chans, men Angus Gunn i Southamptons mål fick ut vänsterhanden och räddade.
I den 26 minuten gav Southamptonbacken Yan Valery bortalaget ledningen med en praktträff som David de Gea inte kunde rädda, trots att han var på bollen med handen.
Manchester United skapade en hel del framåt men det dröjde till den andra halvleken när Andreas Pereira slog till utanför straffområdet och skruva in 1-1 i det högra hörnet.
Romelu Lukaku gav sedan hemmalaget ledningen, men när James Ward Prowse kvitterade på en frispark med kvarten kvar såg det ut att sluta med ett kryss.
Med Sir Alex Ferguson på läktaren avgjorde Romelu Lukaku med ett skott utanför straffområdet fram till 3-2 i den 89:e minuten.
Paul Pogba hade sedan chansen att göra 4-2 på straff men missade.
Segern gör att Manchester United går om Arsenal och upp på den åtråvärda fjärdeplatsen, som betyder Champion League-spel nästa säsong.