The striker, who only joined Town on loan from Leeds 48 hours earlier, came on as an 83rd-minute substitute and struck the winner with the last kick of the match.
The goal condemned Charlton to a first home defeat of the season and cemented Ipswich’s place in the play-off spots. Such an outcome had looked unlikely in a game of few chances between two sides more prone to drawing than winning so far this season.
Town threatened first in a lively start to the lunchtime encounter when Luke Chambers headed Stephen Hunt’s corner narrowly wide, and from Charlton goalkeeper Nick Pope’s clearance, Callum Harriott teed up Johann Gudmundsson – whose shot was well saved by Bartosz Bialkowski.
Harriott’s attempted curler was also kept out by Bialkowski, while the lively winger then superbly turned inside Tyrone Mings only to pull his shot wide from 15 yards.
Pope, who comes from a family of Ipswich fans and was released by the club as a youngster, did well to keep out a fierce drive from Paul Anderson, made a bit of a meal of keeping out Daryl Murphy’s effort but then got down smartly to divert David McGoldrick’s header wide.
At the other end, Bialkowski was also kept on his toes and made a fine diving stop to deny the overlapping Charlton right-back Chris Solly before half-time.
With both sets of strikers misfiring, Ipswich left-back Mings also tried to take matters into his own hands just after the interval, striding forward and skipping past two tackles on the edge of the area before taking aim and firing inches wide.
A curler from Murphy failed to trouble Bialkowski as it flew the wrong side of the post, and substitute Connor Sammon was denied by a superb last-ditch challenge from Andre Bikey.
Things might have been different had Charlton’s best chance of the match fallen to their top scorer, Igor Vetokele. Instead the Angolan striker created it, cutting the ball back from the byline to Harriott 10 yards out, only to see his team-mate take a swing and a miss in front of goal.
And the hosts were made to pay at the end when McGoldrick’s half-cleared cross fell to Hunt, who lashed it through a crowd of players and into the net.