Former Pistons center Kwame Brown added 14 points and 10 rebounds for the Bobcats, who snapped a two-game losing streak.
Detroit, which lost its fourth in a row, was missing Rodney Stuckey (shoulder) and Jason Maxiell (back). Ben Gordon led the Pistons with 20 points and Tayshaun Prince added 16.
Charlotte held the Pistons to 39 percent shooting in the first half, and held a 28-14 rebounding advantage, but only led 44-41 at the break. That allowed Detroit to get back into the game, starting with a 9-2 run to open the second half.
The Pistons led 56-48 midway through the third quarter, but the Bobcats went on a 20-9 run to take a 68-65 lead heading into the fourth.
Jackson started the fourth quarter with a 3-pointer, and Gerald Henderson added a three-point play to put Charlotte up 74-65. Detroit was then called for a shot-clock violation before Jackson's jumper made it a double-digit lead.
By the time the Bobcats had finished the run, which included another Jackson 3-pointer, they led by 16 points.
Detroit cut the deficit to 90-83 with 3:10 left, but Jackson answered by blowing past Prince for an easy layup.
Notes: Because of a storm that dropped nearly a foot of snow in Metro Detroit on Tuesday night and Wednesday morning, the Pistons gave away free "Snow Day" tickets. Despite that, the game drew a smaller-than-normal crowd. ... Richard Hamilton was active after missing three games with the flu, but did not play. Hamilton has not appeared in a game since January 10. ... Brown's double-double was his third in six games.