Michail Antonio kept alive Southampton's slim hopes of a League One play-off place with the only goal and at the same time put a dent in Charlton's ambitions for automatic promotion.
Antonio struck in the 34th minute at the end of a sharp move involving Jason Puncheon and finished with a right-foot shot from 15 yards.
Antonio, on loan from Reading, celebrated his first league goal and gave Southampton the initiative in a hard-fought encounter.
Southampton's other hero was their goalkeeper Kelvin Davis who made three outstanding saves, all of them from Charlton captain Nick Bailey.
Davis turned over a Bailey header in the ninth minute and then again in first-half stoppage time.
Bailey was also denied in the 57th minute with a goal-bound shot which the goalkeeper pushed to safety.
Southampton's leading scorer Rickie Lambert almost added to his 31 goals just after half-time but his header was cleared from the line by Lloyd Sam.
Charlton manager Phil Parkinson used all three substitutes in a desperate bid to snatch a draw and one of them, Dave Mooney, might have levelled in the last minute but could not get his shot on target.
Copyright (c) PA Sport 2009, All Rights Reserved.