Southampton’s early lead, which they’d grabbed through Stuart Armstrong, was overturned by two quickfire goals by Marcus Rashford and Anthony Martial. But Obafemi spoiled the night with a 96th-minute equaliser.
A win for United would’ve seen them climb into a Champions League place with three games remaining, but Obafemi’s late goal dropped the Reds back into fifth.
Southampton, who have spent the better part of three years battling relegation, inched further away from Newcastle in the battle for 12th as they look to secure their highest league finish since coming eighth in 2016/17.
It was Saints taking a deserved lead under grey skies when Danny Ings caught Paul Pogba in possession just outside the box and Nathan Redmond then picked out Armstrong at the back post to fire home.
But Rashford and Martial scored just three minutes apart to give United a 2-1 lead, cancelling out Southampton’s early goal.
Martial held off two Saints defenders before poking the ball out wide for Rashford to thrash a left-footed effort past Alex McCarthy on 20 minutes.
The French international then turned goal scorer when he cut in from the right after racing past Kyle Walker-Peters, who was busy all night, and smashed a right-footed effort into the goal.
Redmond had two chances to bring Southampton level after half-time, but the midfielder shot wide of the post before drawing David De Gea into action with a forearm save four minutes from full-time.
Following a clash of heads, United was forced to finish with 10 men after Brandon Williams went off injured and in the ensuing set play, Obafemi turned in James Ward-Prowse’s corner at the back post.
Manchester United: De Gea, Shaw (Williams 75), Maguire, Lindelof, Wan-Bissaka, Matic, Pogba (Fred 63), Greenwood (McTominay 84), Bruno Fernandes (James 84), Rashford, Martial
Unused subs: Sergio Romero (GK), Bailly, Andreas Herrera, Mata, Ighalo
Goals: Rashford (20), Martial (23)
Bookings: Wan-Bissaka (90+2)
Southampton: McCarthy, Bertrand, Bednarek, Stephens, Walker-Peters, Romeu (Obafemi 87)), Ward-Prowse, Redmond, Armstrong (Smallbone 70), Adams (Long 64), Ings
Unused subs: Gunn (GK), Vestergaard, Ferry, Hojbjerg, Danso, Vokins
Goals: Armstrong (12), Obafemi (90+6)
Bookings: Ward-Prowse (44), Stephens (53), Walker-Peters (56)