Gerald Henderson finished with 17 points and Ramon Sessions had 16 for Charlotte.
The Hawks are 12-3 since losing three of their first five games this season. Atlanta has won two in a row and five of six.
Lou Williams had eight of his nine assists in the first half for Atlanta. Williams, who finished with 13 points, matched his career high in assists, and Ivan Johnson added a season-high 16 points.
Hawks center Al Horford finished with 11 points and three rebounds, ending his streak of seven consecutive double-doubles.
Atlanta got off to a strong start offensively, hitting nearly 63 percent of its first 35 shots before Horford and Williams missed jumpers to end the first half.
Charlotte shot 35.9 percent and trailed by 17 at the break.
Since winning in double overtime at Washington on Nov. 24 and improving to 7-5, the Bobcats have looked similar to the Charlotte team that finished last season 7-59 for the worst winning percentage in NBA history.
The Bobcats were coming off a dispiriting home loss Wednesday to the Los Angeles Clippers in which they blew a seven-point lead in the fourth quarter.
When Charlotte last visited Philips Arena on Nov. 28, the game was decided on Horford’s late free throws and a missed 3-pointer by Hornets forward Byron Mullens.
The Hornets were led that night by Ben Gordon, who scored 20 of his 26 points in the fourth quarter. On Thursday, Gordon had just seven points on 2-for-9 shooting.
Hawks guard Kyle Korver, playing for the second straight night after returning from a five-game absence caused by back spasms, finished with 13 points in 22 minutes.
KNICKS 116, LAKERS 107
In New York, Carmelo Anthony scored 30 points before leaving the game with a sprained left ankle, and first-place New York picked up a victory over struggling Los Angeles.
Raymond Felton had 19 and Tyson Chandler added 18 for the Knicks, who have won three in a row and eight of nine.
Kobe Bryant had a game-high 31 points for the Lakers, who have lost fo
ALL-STAR VOTING: LeBron James and Kobe Bryant are the leading vote-getters, while Jeremy Lin has a chance to bring Linsanity to the NBA All-Star game.
Lin was running third among Western Conference guards behind Bryant (639,419 votes) and Chris Paul (353,603) when the NBA released the first All-Star balloting update of the season Thursday.
Lin was a little more than 55,000 votes behind Paul as he tries to gain a starting spot for the Feb. 17 game in his home arena in Houston.
Lin, an Asian-American who became a worldwide phenom last season while playing for the New York Knicks, has struggled in his first season with the Rockets but remains popular in Asia and figures to benefit from this being the first time fans can vote via social media.
TIMBERWOLVES: Brandon Roy has returned to practice on a limited, no-contact basis with Minnesota a month after arthroscopic surgery on his right knee – an accomplishment by itself given the chronic problems he’s had.
The former NBA Rookie of the Year and All-Star decided to revive his career in Minnesota this season. Roy said the latest knee trouble didn’t prompt him to consider retirement, like he did a year ago when he was with Portland.
“I never thought about walking away. It was just, for me, do I want to go through another procedure? Or do I want to play through it?” Roy said Thursday.
Roy said he felt fine in training camp, but he banged knees with another player in an exhibition game against Milwaukee on Oct. 26, and the discomfort worsened after another collision in a game against Indiana on Nov. 9. He had the operation on Nov. 19.
Roy has been doing light drills with the team but said there’s no timetable for his return to the lineup. The Wolves have four games in the next five days, so he won’t be back for that. He said he’ll start to practice at full speed next week.