Williams sank 5-of-8 3-point attempts, the last giving Cleveland a 90-70 lead with 2:47 left in the contest.
LeBron James added 14 points, seven rebounds and nine assists.
Delonte West and Anthony Parker scored 13 points apiece, while Zydrunas Ilgauskas added 10 points and five blocked shots for the Cavaliers, who have won two in a row after starting the new season with two losses.
Reserve Vladimir Radmanovic led Charlotte with 12 points.
Gerald Wallace scored 11 with nine rebounds. D.J. Augustin scored 11 with five assists, while Raymond Felton scored 10 with three assists for the Bobcats, who beat New York 102-100 in double-overtime Friday.