Oklahoma City got within one when Durant made a jumper over James, but no closer. Ray Allen's two free throws with 15.6 seconds left made it 100-97, and Miami's last three points came from the line. Durant missed a 3-pointer that James contested, Westbrook wound up with a second chance that Wade defended, and the Thunder guard smacked a nearby table arguing that he was fouled.
"Part of the game," Westbrook said.
While the stars were stars, the Heat got help from one unexpected source. Chalmers was making everything, even unintended plays. Allen lost possession on what looked to be a pass to no one, but Chalmers picked up the bouncing ball on the right wing, whirled and made a 3-pointer — putting Miami up 86-79 with 8:14 left.
In the end, that cushion was necessary.
"I got going early," Chalmers said, "and I stuck with it."
The Heat came out flying, opening a quick 13-2 lead after making six of their first seven shots. About all that didn't go right for the Heat early on was James committing a foul, the first time he was called for a personal since Dec. 8.
It happened 4:03 into the game — 254 minutes and 7 seconds of on-court time since his last one — when James fouled Ibaka on a dunk attempt.
Chalmers had 12 points, matching his season high, in the opening quarter alone, and that was also Miami's lead after his layup for a 15-3 edge. When Durant headed to the bench after being called for his second personal, plus a technical, with 2:08 left in the first, the Heat led 27-16.
But even with Durant out, Oklahoma City scored the last eight points of the quarter, six coming from the line. The Thunder shot 17 of the game's first 18 free throws and finished with a 38-19 edge in tries from the stripe.
The Heat were held to two points in the first 5:05 of the third, and the Thunder grabbed the lead for the first time. Durant connected on a baseline jumper while falling out of bounds and getting fouled by James. The resulting free throw gave Oklahoma City a 58-56 edge.
With that, the back-and-forth began, and Miami found a way.
"Both teams really played up to the billing," Wade said. "An excellent basketball game."
NOTES: James scored at least 20 points for the 30th straight regular-season game and 46th overall. ... Wade is 7-1 on Christmas, and James has won six straight on the holiday. ... Miami's Mike Miller became the 48th active player to reach 10,000 points. ... The Thunder have used the same starting lineup for all 27 games. ... James passed Bernard King for 39th on the NBA career scoring list. ... Attendance was 20,300, the largest crowd for a Heat home game since they moved into AmericanAirlines Arena.