Jamie Ward came off the substitute's bench to snatch a stoppage-time winner for ten-man Sheffield United.
Ward replaced Danny Webber in the 86th minute and watched as Southampton equalised in the last minute of normal time.
United had taken the lead in the 35th minute when Greg Halford headed in from six yards after good work in the build-up by Southampton old boy Brian Howard.
But five minutes later United had big striker Darius Henderson sent off for an off-the-ball incident which left Dutch defender Jan-Paul Saeijs on the floor.
Henderson's red card was his second in six weeks following his dismissal in December against Swansea City.
United were left with more than 50 minutes to hold on and they came under fierce second-half pressure.
United goalkeeper Paddy Kenny made a great save from Jason Euell and Bradley Wright-Phillips twice went close as Southampton piled on the pressure in a desperate bid to level.
They had to wait until the 90th minute though when Lloyd James centred from the right and Andrew Surman volleyed in from 12 yards.
Just when it looked as if Southampton had earned a point in their battle for Championship survival, the lively Ward raced clear to beat goalkeeper Kelvin Davis with a left-foot shot which went in just inside the far post.
Southampton had only themselves to blame after dominating long stretches of the second half and the opening half-hour.
Marek Saganowski and David McGoldrick went close before Halford's opener.
After the break United were forced to defend in depth as Southampton went in search of a leveller.
The crowd of 13,257 was Southampton's lowest for a league match at St Mary's in the eight years since the stadium was built.