Match ends, Swansea City 1, Charlton Athletic 0.
Swansea City climbed back into the Championship play-off places as Yan Dhanda's goal saw off Charlton.
Dhanda finished off a smart team move with a 20-yard effort to put Swansea in front after just 14 minutes.
Steve Cooper's men missed a number of chances to extend their lead as they dominated the first half.
Charlton improved after the break and made Swansea work hard to hold on for a victory which moves them up to sixth in the table.
It was a welcome home triumph for the Swans, who had only won two of their previous 10 games on their own patch.
This fixture marked the start of a new era for Charlton after East Street Investments completed their takeover of the club from Roland Duchatelet, but they have now won only once in 14 matches.
Swansea went top of the table thanks to victory at Charlton in early October, a result which left the Addicks eighth.
Both clubs have struggled to match their early-season successes since then, and both will be hoping 2020 brings an upturn in form.
It is Swansea who have taken a first step forward - thanks to Dhanda's early goal.
Borja, Dhanda, Connor Roberts, George Byers and Andre Ayew were all involved in the build-up before Dhanda's shot flew into the net with the aid of a slight deflection.
It was the 21-year-old's second goal of the season, with both strikes coming against Charlton.
Swansea grew in confidence, with Charlton giving the ball away cheaply and allowing their hosts too much time to play.
The big disappointment for Cooper come half-time was that his team were not further ahead.
Borja sent a volley into the side netting then drilled wastefully over the top after he was fed by Byers.
Charlton goalkeeper Dillon Phillips made a fine save to deny Ayew after he was picked out by Wayne Routledge, and seconds later Byers' drive crashed back off the post.
Roberts also flashed a shot narrowly over the top in a first half which saw just one notable Charlton effort, Tom Lockyer heading Conor Gallagher's corner straight at Freddie Woodman.
Already without top scorer Macauley Bonne through injury, Charlton withdrew seven-goal Lyle Taylor at the break.
Yet substitute Alfie Doughty almost levelled early in the second half when he broke the offside trap and raced clear only to drag a shot just wide of the post.
Swansea suffered a setback as centre-back Mike van der Hoorn - who was making his comeback from a knee problem - was forced off injured, and their new-look rearguard was almost breached moments later as the unmarked Josh Davison headed wide.
Byers might have ended Charlton's revival midway through the second half but his powerful effort was beaten away by Phillips.
The visitors piled on the pressure in the closing stages, Woodman getting down well to deny Davison in the last few seconds of stoppage time.
Swansea head coach Steve Cooper said:
"In the first half we were excellent, as good as we have been here all season.
"We were glad for the 1-0 lead, but the frustration was that it wasn't two or three because we really looked a threat.
"Second half it wasn't a surprise that after so many games over the festive period, they were chasing the game, there were some long balls into the box and we were naturally a bit deeper.
"We wanted to see out the result and we defended it really well."
Charlton boss Lee Bowyer said:
"I'm proud. I asked the young players to go out and grab their opportunity. I knew the youngsters would give me everything they have got and they didn't disappoint.
"The experienced players guided them through and I can't ask any more. They have given absolutely everything.
"We were the better side in the second half and on another day we score one and go on and win the game, but it wouldn't go in.
"The most important thing was that they didn't give in. I want to win every game, but I can't say anything other than I'm proud of them."
- 5van der HoornSubstituted forWilmotat 58'minutes
- 26NaughtonBooked at 2mins
- 21DhandaSubstituted forCelinaat 65'minutes
- 22A Ayew
- 9BastónSubstituted forFultonat 86'minutes
- 6PearceBooked at 45mins
- 3PurringtonSubstituted forSarrat 87'minutes
- 15PratleyBooked at 50mins
- 19MorganBooked at 22minsSubstituted forVenningsat 71'minutes
- 9TaylorSubstituted forDoughtyat 45'minutes
- Peter Bankes
- Shots on Target
Second Half ends, Swansea City 1, Charlton Athletic 0.
Attempt saved. Conor Gallagher (Charlton Athletic) right footed shot from the right side of the box is saved in the top centre of the goal. Assisted by James Vennings.
Attempt saved. Josh Davison (Charlton Athletic) right footed shot from outside the box is saved in the bottom left corner. Assisted by Darren Pratley.
Foul by Ben Cabango (Swansea City).
Josh Davison (Charlton Athletic) wins a free kick in the attacking half.
Connor Roberts (Swansea City) wins a free kick in the defensive half.
Foul by Jason Pearce (Charlton Athletic).
Offside, Charlton Athletic. Adam Matthews tries a through ball, but Jason Pearce is caught offside.
Corner, Charlton Athletic. Conceded by Ben Cabango.
Offside, Charlton Athletic. Tom Lockyer tries a through ball, but Naby Sarr is caught offside.
Substitution, Charlton Athletic. Naby Sarr replaces Ben Purrington.
Substitution, Swansea City. Jay Fulton replaces Borja Bastón because of an injury.
Wayne Routledge (Swansea City) wins a free kick in the defensive half.
Foul by Adam Matthews (Charlton Athletic).
Corner, Swansea City. Conceded by Darren Pratley.
Attempt blocked. Bersant Celina (Swansea City) right footed shot from the centre of the box is blocked. Assisted by Connor Roberts.
Offside, Swansea City. André Ayew tries a through ball, but Connor Roberts is caught offside.
Corner, Swansea City. Conceded by Ben Purrington.
Substitution, Charlton Athletic. James Vennings replaces Albie Morgan.