Just when the match looked to be going the distance, Patrick Bauer converted in the fourth minute of added time to break Sunderland hearts at Wembley Stadium for the second time in two months.
Charlton can now look forward to a first season of second-tier football since 2016, while Sunderland will remain in League One for at least another year.
Sunderland have plenty of experience at this ground, having most recently contested the EFL Trophy final here at the end of March, and it was Jack Ross's side who settled the better.
Following an early spell on top, the Black Cats were gifted a goal as Dillon Phillips failed to control Sarr's back-pass and watched as the ball trickled over the line.
Charlton were rattled for the next 10 minutes and were perhaps fortunate not to concede a penalty as Charlie Wyke's shot struck Bauer on the arm.
A good save from Phillips down to his left to keep out Grant Leadbitter acted as a turning point in many ways, though, as Athletic grew into the match and found an equaliser during their spell on top.
Lyle Taylor, who had earlier volleyed over the crossbar from a good position, teed up Purrington for a simple finish at the back post.
The first big chance of the second half fell Sunderland's way, however, as Lewis Morgan - brought on in the opening 10 minutes for the injured Max Power - failed to adjust his feet in time to convert Chris Maguire's cross 10 yards from goal.
Bryan Oviedo's long-range shot was the best either side could muster in a cagey second half until the closing seconds, when Bauer converted at the second attempt after his initial effort from Tom Flanagan's cross was blocked.
Sunderland had just 30 seconds to find a response and they failed to do so, meaning yet another defeat at this venue that takes them level with rivals Newcastle United (eight) in terms of the longest winless run at the old and new Wembley.
CHARLTON (3-5-2): Phillips; Bielik, Bauer, Sarr (Pearce 46'); Dijksteel, Cullen, Pratley (Williams 71'), Aribo, Purrington; Parker, Taylor
SUNDERLAND (4-3-3): McLaughlin; O'Nien, Ozturk, Flanagan, Oviedo; Power (Morgan 9'), Cattermole, Leadbitter; Honeyman, Wyke (McGeady 72'), Maguire (Grigg 57')