Tristan Thompson had 15 points and 16 rebounds for the Cavaliers, who have won two in a row for the first time since Feb. 26-27.
Cleveland, which broke a season-high, 10-game losing streak Friday in Boston, trailed by seven points late in the third quarter, but took the lead for good early in the fourth and made clutch plays down the stretch.
Tobias Harris scored 26 points, while Nikola Vucevic added 21 points and 21 rebounds for Orlando, which has lost five in a row and 13 of 14. The Magic have dropped 11 straight away from home -- the second-longest road losing streak in franchise history.
Thompson, who recorded career highs with 29 points and 17 rebounds Friday, hit two free throws and a hook shot in the late in the final three minutes to help Cleveland maintain its lead.
Cavaliers guard C.J. Miles left the game in the second quarter after being hit in the forehead with an elbow from Vucevic while the two were going for a rebound. Miles was down on one knee for a couple of minutes and walked to the locker room with a towel to his face. He received six stitches and didn't return.
Orlando was winless on a five-game, eight-day road trip. The Magic haven't won away from home since March 4.
Kyrie Irving, the Cavaliers' All-Star point guard, scored nine points, on 3-of-15 shooting. Irving, who had 10 assists, is 12 for 51 from the field in three games since returning from a shoulder injury.
Wayne Ellington's jumper gave the Cavaliers the lead for good, 72-70, with 7:57 remaining in the game.
The Magic had 10 players in uniform. Point guard Jameer Nelson (sprained ankle) missed his fifth straight game. Swingman Maurice Harkless started at shooting guard despite sustaining a knee injury in the first quarter Friday against Chicago. Harkless scored seven points in 39 minutes.
Shaun Livingston added 12 points for Cleveland.