Toronto has won five games in a row after recording just four victories in its first 23 games.
The Raptors led by 11 with less than 6 minutes to play, but Orlando rallied to within one when Jameer Nelson made a 3-pointer with 57 seconds left.
Johnson's foul shots accounted for the final score and the Magic's J.J. Redick missed a 3-pointer that would have tied it with 10 seconds to play. Orlando had a four-game winning streak snapped.
DeMar DeRozan paced Toronto with 17 points and eight rebounds. Jose Calderon contributed 13 points and nine assists.
The five-game winning streak is Toronto's longest in almost 3 years.
Orlando was paced by 26 points from Arron Afflalo and 16 from Nikola Vucevic.
Reindeer recovered after escaping from Santa during lighting ceremony
Exploding whale video goes viral on Internet