Naz Reid added 26 points off the bench, and Jaden McDaniels had 25 for Minnesota, which trailed by 10 points with 7:18 remaining but used a 19-5 run to get back in the game. Atlanta led 124-123 with 50.5 seconds left after a pair of free throws by Trae Young.
Towns then hit two free throws with 3.6 seconds left to seal the win. He was back after missing 51 games for Minnesota, which had lost three of four and slid to ninth in the Western Conference beginning the night.
Rudy Gobert added 12 points and 12 rebounds for the Timberwolves.
Young scored 29 points, and De’Andre Hunter added 16 for Atlanta, which was playing the second game of a back-to-back after beating Detroit 129-107 Tuesday night with second-leading scorer Dejounte Murray missing both games with a non-COVID-19 illness.
Saddiq Bey had 16 points off the bench for the Hawks.
Atlanta, who shot 54.2% from the field and hit 12 of 26 3-pointers, started the day eighth in the Eastern Conference. They were 2½ games behind Miami and one game ahead of Toronto.
Towns had been out since Nov. 28 with the injury. Minnesota had a 10-11 record when he went out as the team struggled at times to adapt to having two big men on the court together in Towns and newcomer Gobert.
Towns, a three-time All-Star, received a special pregame introduction and was welcomed back by big applause from the home crowd. He returned to a team that found its rhythm with Anthony Edwards carrying the scoring load with a host of veterans filling complementary roles. The Timberwolves also traded Towns’ good friend D’Angelo Russell and acquired Mike Conley at the trade deadline.
With Edwards missing time due to a right ankle sprain, Minnesota had dropped a bit in the packed West.