Paul Pierce added 19 points as the Celtics took a 3-2 lead in the the best-of-seven Eastern Conference final.
A victory at Boston on Thursday will see the Celtics advance to play either Oklahoma City or San Antonio in the NBA Finals starting next Tuesday. A seventh game decider, if needed, will be played at Miami on Saturday.
NBA Most Valuable Player LeBron James scored 30 points and grabbed 13 rebounds while Dwyane Wade added 27 points, but the Heat superstars, united to bring an NBA title to Miami, were pushed to the brink of elimination.
The Heat reached the NBA Finals last year, losing to the Dallas Mavericks.
Miami’s Chris Bosh returned from an abdominal strain suffered in the opening game of a second-round series against Indiana, but the lanky playmaker was not on court in the closing minutes when the game was decided.
Miami led 42-40 at half-time before the Celtics pulled back to 50-50. The Heat then scored nine points in a row, only to have Boston end the third quarter with a 15-1 run that put them ahead 65-60 entering the fourth quarter.
The Heat came back with another nine in a row to seize a 78-72 edge but Garnett sank a jumper to put the Celtics on top 81-80, with Allen adding a free throw to boost the advantage.
Miami’s Mario Chalmers and Boston’s Mickael Pietrus exchanged 3-pointers before Wade evened the game at 85-85 with a bank shot over two defenders.
Pierce answered with two free throws and, after a free throw by Miami’s Udonis Haslem, sank a 3-pointer while being guarded by James to give Boston a 90-86 advantage.
After Wade and Allen traded two free throws each, James scored on a layup to pull Miami closer, but Haslem fouled Garnett and the Boston big man sank two clutch free throws to give the Celtics a 94-90 edge.
Wade missed a 3-point shot and Garnett grabbed the rebound and hurled a pass to the other end of the court as the final buzzer sounded.