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.
Millions of Getty images now available for free via embed tool
Boston schools pull out free condoms over wrapping complaints