The Suns climbed to within a point on a layup by Shannon Brown with 1:01 to play, but then missed out on a chance to take the lead when three consecutive shots failed to go.
Phoenix has dropped two in a row and fell to 2-7 on the road.
The victory was the fourth this season for Toronto and its first since Nov. 11, when the Raptors downed 97-86. Toronto will try to win back-to-back games for the first time when it visits Denver on Monday.
DeMar DeRozan led Toronto with 23 points and Amir Johnson added 16 off the bench.
Marcin Gortat, Shannon Brown and Jared Dudley all had 14 for the Suns.