Jay Bothroyd returned to haunt Charlton as he scored the opening goal of the game shortly after half-time and Karl Henry then added a second late on to boost Wolves' promotion push.
Charlton had enjoyed the better of the opening 45 minutes against fellow promotion hopefuls Wolves but were unable to make their superiority count.
The visitors won a corner inside the opening minute but Andy Reid's inswinger came to nothing as Zheng Zhi was penalised for a foul on Henry.
Wolves hit back quickly with a corner of their own, taken by Michael Kightly, but Charlton goalkeeper Nicky Weaver was equal to it as he cleared the danger at the near post.
Republic of Ireland international Reid was at the heart of most of Charlton's best work in the early stages but both sides were finding it difficult to create any clear-cut chances with neither Weaver nor Wolves goalkeeper Wayne Hennessey seriously troubled.
Alan Pardew's side carved out the first two chances of the game midway through the first half.
The impressive Reid found Chris Powell perfectly placed in the penalty area but the former England full-back's header was parried by Hennessey and then Darren Ambrose fired over the crossbar when well placed as another opportunity went begging.
Ambrose tried his luck with a 20-yard free-kick, awarded after a foul by Jody Craddock on Chris Iwelumo just before the half-hour mark, but once again the Charlton midfielder failed to hit the target.
Charlton were forced into a change nine minutes before the interval when Powell was injured and replaced by Sam Sodje and they then spurned another opportunity shortly before the break when Zhi shot wide.
But Mick McCarthy's half-time team-talk clearly did the trick as the home side took the lead just moments after the re-start and it was a former Charlton player who did the damage.
Henry's cross from the right found Bothroyd and he drove the ball past Weaver from close range.
Wolves had the chance to extend their advantage after 51 minutes when Kightly's inswinging corner found Andy Keogh but he sent his header just wide of the upright.
Charlton threatened again after 59 minutes with Luke Varney shooting from 20 yards, but Hennessey was equal to it and then, just a minute later, the goalkeeper cut out a dangerous cross from Danny Mills.
Darron Gibson of Wolves was booked for unsporting behaviour just after the hour and then Mills tried his luck from 20 yards but was unable to keep his shot down.
Charlton rang the changes with 20 minutes to go, bringing on Jerome Thomas for Madjid Bougherra and replacing the injured Ambrose with striker Svetoslav Todorov.
But it was Wolves who went close to scoring again nine minutes from time only for Weaver to superbly save Seyi George Olofinjana's close-range header.
The home side had the final say, though, as Henry steered the ball home four minutes later.
Teams
Wolverhampton Hennessey, Foley, Darren Ward, Craddock,Neill Collins, Kightly, Olofinjana, Henry, Gibson, Keogh,Bothroyd (Jarvis 88).
Subs Not Used: Stack, Potter, Little, Eastwood.
Booked: Gibson.
Goals: Bothroyd 46, Henry 85.
Charlton Weaver, Mills, Fortune, Bougherra (Jerome Thomas 71),Powell (Sodje 36), Ambrose (Todorov 70), Semedo, Zheng, Reid,Iwelumo, Varney.
Subs Not Used: Randolph, McLeod.
Booked: Semedo.
Att: 24,058
Ref: Richard Beeby (Northamptonshire).