"Every time we made a shot, (Bargnani) came down and made a big play," Bobcats guard Kemba Walker said. "That was really the key to their win."
Bargnani scored Toronto's final nine points and the Raptors won back-to-back games for the first time since road victories at Phoenix on Jan. 24 and Utah on Jan. 25. Toronto had gone 0-10 in games following victories since those wins.
"Andrea and DeMar carried us down the stretch," Raptors coach Dwane Casey said.
The 30 points were the most by Bargnani since he returned March 20 after a 20-game absence caused by a strained left hamstring.
"I feel better," he said. "Every day I get better. I just have to keep working and keep playing hard."
"We were 0-2 against (Charlotte) so it was a great win for us," Bargnani said.
Byron Mullens had 20 points and a career-high 14 rebounds and D.J. Augustin scored 18 points and Charlotte lost its eighth straight. The Bobcats have not won since a home victory over the Raptors on March 17.
"If you want to be a good team in this league, you're going to have to win games at the end," Charlotte's Gerald Henderson said. "We just came up a little bit short."
Derrick Brown had 12 points and Walker scored 10 for the Bobcats, whose 7-44 record is the NBA's worst.
Walker started in place of Augustin, who has been bothered by tendinitis in his right knee and was forced to miss Monday's practice. For Walker, it was his first start since Feb. 15. That was also the last time Augustin came off the bench, as he returned after missing 11 games with a sore toe.
Bobcats coach Paul Silas praised Mullens for his hard work on the boards.
"He just continues to amaze me," Silas said. "Twenty points and 14 rebounds, I don't think anybody would have guessed he could have done that. He just has to keep doing it. I'm very pleased with him. He's playing a lot better than I ever thought he could."
After his driving dunk cut it to 79-73 with 4:38 left, Mullens was fouled on the next possession and had a chance to cut the gap to four, but missed both free throws.
Ed Davis answered with a layup and was fouled, but failed to convert the three-point play. Charlotte answered with a 6-0 run, cutting it to 81-79 with 2:44 left.
DeRozan stopped the run with a pair of free throws before Mullens and Bargnani twice traded jump shots, first two-point baskets and then a pair of 3s.
After a Charlotte timeout, Augustin hit a 3 over Calderon to make it a one-point game, 88-87, with 40 seconds left.
Toronto gave the ball to Bargnani, who held off Mullens to hit a turnaround hook shot with 26 seconds to go, putting the Raptors up 90-87.
"I feel comfortable either inside or outside," Bargnani said. "Coach is very good at finding the right situation, either inside or outside."
Mullens tried a game-tying 3 but his airball went out of bounds, giving possession back to the Raptors.
"I just rushed it," a disappointed Mullens said. "It was open, it was there. I just didn't give it enough."
Bargnani was fouled with 8 seconds left and sealed it by making both free throws.
"He's tough man," Henderson said of Bargnani. "He's just a really good player."
Charlotte scored the game's first six points but it wasn't in front for long. Bargnani and James Johnson each scored seven points in the first, and Kleiza's jumper with six seconds left gave Toronto a 24-22 lead after one.
Kleiza hit four 3-pointers in the second and Bargnani added eight points to give Toronto a 53-46 lead at the half.
DeRozan scored 10 of Toronto's 18 points in the third quarter and the Raptors maintained their seven-point edge, taking a 71-64 lead into the fourth.
Charlotte's Corey Maggette dressed but did not play and remains sidelined with a sore right Achilles. He's expected to miss Wednesday's game at Atlanta.
Toronto F Gary Forbes was scratched with soreness in his left knee. ... Charlotte's Tyrus Thomas injured his jaw in a collision with Raptors G Ben Uzoh in the final second of the third quarter and did not return. Thomas stayed down and was treated on the court before being helped off the floor and walking to the locker room. ... Calderon has recorded double digits in assists in six of the past seven games. ... Rapper Young Jeezy attended the game.