Jermain Defore rescued a point for West Ham in their battle to avoid relegation but they had enough chances to have beaten Southampton.
Defoe struck with seven minutes remaining after the Saints defence hesitated at a long throw from Glen Johnson.
It was no more than West Ham deserved for dominating the second half but they may regret their failure to collect all three points.
West Ham manager Glenn Roeder, manager of the month for March, could only watch in horror as Les Ferdinand scuffed a shot wide in the 18th minute from a good position after being set up by Lee Bowyer.
A minute later a diving header from Trevor Sinclair narrowly missed the target.
In contrast Southampton, with an eye on next week's FA Cup semi-final, did not create a chance until the 39th minute when James Beattie shot across the face of the goal.
But Beattie needed only another four minutes before taking his tally for the season to 22 when he was at the far post to turn in a centre from the left by Chris Marsden.
Saints keeper Antti Niemi produced a great save after 52 minutes to deny Sinclair and then dived to keep out a low shot from Joe Cole.
Southampton lost their grip in midfield despite the introduction of Swedish international midfield player Anders Svensson with 13 minutes remaining.
It needed a goal-line clearance from Matt Oakley to deny Edouard Cisse an equaliser in the 73rd minute but West Ham battled hard to draw level.
Saints survived a torrid last few minutes as West Ham went in search of a valuable away win and they managed to hold on only with difficulty.
Referee Matt Messias had a busy afternoon booking Fabrice Fernandes, Marsden, and Michael Svensson with West Ham's Bowyer and Cole as West Ham threw men forward in search of a winner.