D.J. Augustin recorded a double-double with 23 points and 11 assists, and Corey Maggette chipped in 21 points as the Bobcats have now won six straight against the Raptors.
Jerryd Bayless paced the Raptors with 29 points to go with six assists and DeMar DeRozan added 20 points as Toronto dropped to 2-2 on its current five- game road trip.
After trailing by 10 at halftime, the Bobcats came out scorching in the third quarter, as an 18-4 surge to open the half found the home team leading 61-57 just past the midway point of the stanza.
Augustin tallied the final five points of the run, with his triple giving Charlotte its first lead of the contest.
Bayless quelled the push with a layup, but another spurt ensued as Henderson's jumper sparked a 13-4 run to provide the Bobcats with a 74-63 advantage.
Augustin would add a layup just before the end of the third to press the Bobcats' lead to 81-67 heading into the final frame.
The lead dipped to seven on Bayless' three-pointer with 7:50 to play, but the Bobcats quickly pressed the lead back to 10.
It looked as though Charlotte would cruise to the victory until Ivan Johnson finished a putback dunk to make it a 103-98 contest with 44.2 ticks remaining.
The margin was still five when Bayless came up with a steal and connected on a triple with 11.7 to play to make it a 105-103 contest, but Augustin sank two from the stripe as the Bobcats held on for the victory.
Toronto closed the first quarter on a 13-4 surge to take a 29-20 advantage after one.
The Raptors quickly extended the lead to 15, scoring the first six points of the second to go ahead, 35-20, and they carried a 53-43 edge into the locker room.
Toronto will finish its road trip on Tuesday in New York, while the Bobcats will host Philadelphia on Monday...Toronto's Jose Calderon missed his fifth straight contest with a sprained right ankle...Charlotte finished 31-of-34 from the free-throw line compared to 19-of-24 from the line for Toronto.