MIAMI -- LeBron James and Kevin Durant exchanged words. Dwyane Wade and Serge Ibaka did a little shoving. Five technical fouls were called, and Russell Westbrook punched a table in frustration.
This NBA Finals rematch met expectations.
And like that series, it ended with Miami on top.
James had 29 points, nine assists and eight rebounds, Wade scored 21, and the Heat survived a frantic finish to beat the Oklahoma City Thunder 103-97 on Tuesday.
"Felt a little bit like a different month," Heat coach Erik Spoelstra said. "Regardless of what your script is coming into the game, when you play this team, it's not going to go according to script. They're too good."
But on this night, much like last June, the Heat were better.
Mario Chalmers scored a season-high 20 for the Heat, who were 19 for 19 from the foul line, the second-best effort in franchise history behind only a 30-for-30 game in Boston on March 24, 1993. Chris Bosh added 16 for Miami, which has beaten the Thunder five straight times going back to last June's title series.
Durant scored 33 points and Westbrook added 21 for Oklahoma City, but both Thunder stars missed potential game-tying 3-point attempts in the final seconds.
"It was a great game. I can't complain," Thunder coach Scott Brooks said. "We could have done a better job of not turning the ball over in the first half. All in all, it was a great game to play and a great game to coach. Unfortunately, we didn't come out with the win."
It's the first losing streak of the season for the Thunder, who had been 4-0 after losses. Ibaka and Kevin Martin each scored 15 for Oklahoma City.
The game had a little of everything -- a fast start by the reigning champions, a one-handed dunk by James on an offensive rebound that will be added to his copious highlight reel, a scrum after a hard foul that led to double-technicals on Wade and Ibaka early in the fourth, an easy rally by the Thunder from an early double-digit deficit, and even workout partners in Durant and James barking back and forth in the final minutes.
Such was the intensity that James slumped over the scorer's table with 1:08 left, exhausted.
"I'm tired as hell right now," James said -- and that was more than an hour after the game ended.
With good reason. On an emotional day, there was a wild finish.
Wade lost the ball on an ill-advised, behind-the-back dribble, and the turnover set up Durant for a two-handed dunk that got the Thunder within 96-95 with 44.1 seconds remaining.
Needing a stop on the next trip, the Thunder forgot to play defense instead. Kendrick Perkins and Ibaka both were confused on the ensuing Miami possession, and Bosh was left alone to take a pass from James and throw down a dunk that restored Miami's three-point edge.
"We went over and helped," Durant said. "We just needed to help on the backside. There was miscommunication but we still had a chance to go into overtime."
Two chances, actually.
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 of those coming from the line. The Thunder shot 17 of the game's first 18 free throws and finished the game 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.