The Cavaliers were down 19 points in the third quarter but came back to snatch the lead through Garland’s free throws, before Dennis Schroder missed a jumper which would have forced overtime.
Garland had 22 points and six assists while rookie Evan Mobley had 19 points, nine rebounds and three blocks for the Cavs, while Schroder led the Celtics with 28 points.
Cleveland have won six of their past seven games to improve their win-loss record to 9-5 while the Celtics went 6-7.
Tyler Herro had 27 points and eight rebounds to help lift the Miami Heat to a 111-105 win at the Utah Jazz.
Duncan Robinson had 22 points including six three-pointers while Kyle Lowry had 21 as Miami snapped a three-game losing streak.
Utah were led by Bojan Bogdanovic with 26 points, including 19 in the fourth quarter, while Jordan Clarkson added 25 as the Jazz lost their fourth out of five.
Justin Holiday came off the bench to score a season-high 27 points as the Indiana Pacers overcame the visiting Philadelphia 76ers 118-113.
Holiday shot nine of 11 from the field to top the scoring for his side while Malcolm Brogdon had a triple-double of 13 points, 10 rebounds and 10 assists.
Tobias Harris had 32 points and Tyrese Maxey 24 for the 76ers, who were without Joel Embiid for a fourth straight game, and a fourth straight loss, due to his positive test for Covid-19 last Monday.
In other games, the New Orleans Pelicans won 112-101 at home to the Memphis Grizzlies, the Washington Wizards won 104-92 at the Orlando Magic, the Detroit Pistons won 127-121 at the Toronto Raptors, and the Los Angeles Clippers won at home to the Minnesota Timberwolves, 129-102.