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.
Do YOU want to write for GiveMeSport? Get started today by signing-up and submitting an article HERE: https://www.givemesport.com/writeforgms