James Ward-Prowse continued to be influential, setting up the first goal and scoring the second for Saints, who looked set to shock their opponent after overcoming a sluggish start.
But United recovered in the second half as goals from Bruno Fernandes and a double from Edinson Cavani flipped the script.
United made a bright start and Mason Greenwood nearly pinched a quick goal after Alex McCarthy cheaply gave away the ball, but the forward could only hit the side netting from a tight angle.
Ward-Prowse would give life to Saints, pulling his side to a two-goal lead within a 10-minute stretch, as the midfielder’s corner on 23 minutes was glanced into the goal by Jan Bednarek to give Southampton a 1-0 lead.
Kyle Walker-Peters was unlucky to not immediately double the advantage having his shot deflected off the far post with Saints having grown into the game following a shaky opening 20 minutes.
Moussa Djenepo was lively all afternoon and won a free-kick from just outside the box and that allowed Ward-Prowse to step up and deliver a beautifully taken free-kick into the near corner to make it 2-0 to Saints on 33 minutes.
Southampton had a chance to distance themselves further, but Stuart Armstrong was unable to control Djenepo’s rebound at the far post with his first touch taking the ball out of play.
United started the second half much like they did with the first and Greenwood came close to finding a breakthrough only to be denied one-on-one against McCarthy, who stood tall to block away the shot.
But Bruno Fernandes made Saints pay on the hour-mark with a right-footed shot that found the bottom corner and from there, it was all United.
Second half-substitute Edinson Cavani headed over the bar before Bruno Fenandes fired wide of the left post with United looking most likely to find their equaliser.
Cavani then drew United level with their goals coming 14 minutes apart with a diving header inside the box that beat a flat-footed McCarthy.
Che Adams had a half a chance 12 minutes from full-time when the ball dropped to him in the box allowing him to turn but he rolled a shot wide of the goal.
Cavani took all the wind out of Southampton’s sails as he capped off the comeback with a late winner to secure all three points for United.
Southampton (4-4-2): McCarthy; Bertrand, Vestergaard, Bednarek, Walker-Peters (N’Lundulu 94); Romeu, Ward-Prowse, Djenepo (Long 72), Armstrong (Diallo 90); Adams, Walcott
Unused subs: Forster (GK), Stephens, Obafemi, Tella
Goals: Bednarek (23), Ward-Prowse (33)
Bookings: Ward-Prowse (16)
Manchester United (4-3-1-2): de Gea (Henderson 46); Telles (Williams 84), Maguire, Lindelof, Wan-Bissaka; van de Beek, Matic, Fred; Bruno Fernandes, Rashford, Greenwood (Cavani 46)
Unused subs: Mata, James, Tuanzebe, Fousa-Mensah
Goals: Bruno Fernandes (60), Cavani (74, 90+2)