United made it difficult for the Saints to settle into the game, firing an early warning shot through the Netherlands international and holding the ball in the midfield.
The hosts soon steadied the ship and starting playing some good football in the final third. They took a surprise lead when Jason Puncheon's cross found Rickie Lambert at the back post, and he headed home for 1-0.
It was Southampton's first Premier League goal at St Mary's since 2005, but it wasn't long before United levelled the match.
Antonio Valencia whipped in an invited ball to Van Persie, who took the ball on his chest and hit the back of the net with a half-volley.
United started the second-half brightly and almost edged their noses in front on 49 minutes when Shinji Kagawa latched onto a deft Van Persie chip, but shot wide.
Southampton continued to match United, and edged their noses back in front on 55 minutes. Lambert was the provider this time, whipping the ball over the head of Patrice Evra for Morgan Schneiderlin to nod in.
More drama ensued when Jos Hooiveld brought down the Dutchman in the area following a poor clearance by Davis. The forward stepped up to take that kick himself, but his cheeky effort was poor and failed to trouble the Saints keeper.
The striker went on to redeem himself, but he left it late. Rio Ferdinand's 88th-minute header came back off the post, and Van Persie pounced to bundle the ball over the line for the equaliser.
United thought they had rescued a point, but it turned out to be more than that. A superb stoppage-time goal from Van Persie off a corner broke Southampton hearts and secured all three points for the Red Devils.