Late goals from Marc-Antoine Fortune and Jordi Gomez helped Wigan snatch victory over Charlton and extended their fine run under Uwe Rosler.
The Latics have lost twice in 13 matches under the German, but Marvin Sordell threatened to inflict a rare defeat when he put Charlton ahead.
Reza Ghoochannejhad also struck the bar for the visitors in the opening half.
But substitute Fortune finished smartly two minutes from time, and Gomez won it with an injury-time free-kick.
Wigan's victory extended an impressive run of home form to seven matches without defeat, and moved them 10th in the Championship table, seven points adrift of the play-off positions.
Charlton, who remain in the relegation zone, will feel hard done by after starting impressively.
Just three minutes had elapsed when Sordell raced onto a through-ball from midfielder Johnnie Jackson to beat Ali Al-Habsi with a cool finish.
Callum McManaman led the home response and went close twice, before Ghoochannejhad was denied by an Al-Habsi parry and rattled the crossbar soon after.
McManaman, who was busy throughout, curled against the bar himself before the break and it was his effort early in the second period which allowed Nicky Maynard to prod the ball home, only for the offside flag to deny him.
Rosler's side had lost three league games in a row before his arrival, and it was his introduction of Fortune and
recent loan signing Josh McEachran
that proved significant.
Ben Watson and Emmerson Boyce went close for the FA Cup holders and Leon Barnett headed over when well placed for the Addicks, but McEachran's exquisite pass saw Fortune slot the equaliser.
And there was to be one final twist when Gomez hit a superb free-kick from 20 yards that Charlton goalkeeper Yohann Thuram-Ulien could not keep out.
Wigan manager Uwe Rosler:
"Sometimes you need a bit of luck, and we got that with the substitutions.
"I didn't want to go long ball. The temptation is to do that, and we don't have the players to do that.
"For me, the only way we were going to come back into the game was by playing football, and that's the reason I made the changes I did."
Charlton boss Chris Powell:
"It's tough to take. It was such a brave performance, we put our bodies on the line.
"Being 1-0 up for so long, and having put in a performance that was so committed and diligent, it looked like it was going to be our day.
"When it gets to that stage of the game, you're looking to just see it out. Sadly it wasn't to be."
Full Time Match ends, Wigan Athletic 2, Charlton Athletic 1.
90:00 +4:33 Full time
Full Time Second Half ends, Wigan Athletic 2, Charlton Athletic 1.
Foul by James McClean (Wigan Athletic).
Diego Poyet (Charlton Athletic) wins a free kick in the defensive half.
Foul by Jordi Gómez (Wigan Athletic).
Reza Ghoochanneijhad (Charlton Athletic) wins a free kick in the attacking half.
90:00 +0:07 Goal scored
Goal! Goal! Wigan Athletic 2, Charlton Athletic 1. Jordi Gómez (Wigan Athletic) from a free kick with a left footed shot to the bottom left corner.
Jordi Gómez (Wigan Athletic) wins a free kick in the attacking half.
Foul by Michael Morrison (Charlton Athletic).
87:49 Goal scored
Goal! Goal! Wigan Athletic 1, Charlton Athletic 1. Marc-Antoine Fortuné (Wigan Athletic) right footed shot from the centre of the box to the bottom right corner. Assisted by Joshua McEachran with a through ball.
Ben Watson (Wigan Athletic) wins a free kick in the attacking half.
Foul by Bradley Pritchard (Charlton Athletic).
Attempt missed. Leon Barnett (Wigan Athletic) header from the centre of the box is just a bit too high. Assisted by Leon Barnett.
Corner, Wigan Athletic. Conceded by Yohann Thuram.
Attempt saved. Emmerson Boyce (Wigan Athletic) left footed shot from the left side of the six yard box is saved in the top right corner. Assisted by Jordi Gómez with a cross.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.