Charlton enjoyed their first final day victory since 1987, despite a strong comeback by Southampton at The Valley.
Jason Euell put the Addicks ahead, firing past keeper Alan Blayney who had earlier saved well from Paul Konchesky.
The home side went 2-0 up after the interval when skipper Matt Holland fed Carlton Cole - on for the injured Paolo di Canio - who drilled home.
Saints pulled one back when Stephen Crainey crossed for David Prutton to score, but Charlton held on.
The Addicks started brighter than Southampton, who soon lost midfielder Anders Svensson.
The 13th minute proved unlucky for the Swede, who limped off with what looked like a hamstring injury and was replaced by defender Chris Baird.
Holland and Euell both fired wide for Charlton, before Konchesky was presented with a free-kick opportunity on the edge of the box in the 28th minute.
Konchesky, hoping to mark his 23rd birthday with a goal, curled his left-foot shot round the wall, forcing a superb one-handed save from young Saints goalkeeper Blayney who was deputising again for Antti Niemi.
As the game finally came to life, Southampton's Brett Ormerod weakly shot wide from close range, and then crossed for strike partner James Beattie to head over the bar.
36 mins: Jason Euell puts Charlton ahead
53 mins: Substitute Carlton Cole puts the Addicks 2-0 ahead
64 mins: David Prutton gets a goal back for Saints
Less than a minute later, Blayney had to be alert to block Shaun Bartlett's left-footed shot - and at the other end, Darren Kenton headed wide from Baird's corner.
But the home side finally broke the deadlock when Bartlett and Di Canio combined well, and the Italian lobbed the ball over defender Fitz Hall for Euell to fire past Blayney.
Ormerod beat the offside trap as Saints looked for an immediate reply, but keeper Dean Kiely came out to scramble the ball away.
Bartlett and Holland both tried their luck from distance again as the home side finished the first half stronger.
But Di Canio's season ended prematurely when he pulled up, holding his ribs, after chasing a long ball in first-half stoppage time.
His replacement Carlton Cole had a shot tipped round the post by Blayney soon after the break.
Two minutes later, Charlton had a second as Holland's long, probing pass beat the two centre-backs and found Cole at the far post.
The on-loan Chelsea striker chested the ball down before drilling home a left-footed shot from six yards.
Southampton's David Prutton was then booked for a foul on Hreidarsson, but redeemed himself four minutes later when he fired home from full-back Stephen Crainey's left-wing pass after a clever dummy by Ormerod.
Beattie, desperate to claim the final striker's place for Sven-Goran Eriksson's England squad, headed over again as Saints chased an equaliser.
Paul Telfer also fired wide in the dying minutes, while Radostin Kishishev nearly lobbed a back-pedalling Blayney, who had to stop himself carrying the ball over the line.
But Charlton held on to end their 17-year final day hoodoo.
Charlton: Kiely, Young, Fortune, Perry, Hreidarsson, Kishishev,
Euell, Holland, Konchesky, Bartlett, Di Canio (Cole 45),
Cole (Jensen 86).
Subs Not Used: Royce, Powell, Fish.
Southampton: Blayney, Telfer, Hall, Kenton, Crainey,
Fernandes (Griffit 85), Prutton, Folly,
Anders Svensson (Baird 13), Ormerod, Beattie.
Subs Not Used: Poke, Cranie, Blackstock.
Referee: J Winter (Cleveland).