SALT LAKE CITY -- Al Jefferson scored 23 points and grabbed 11 rebounds, and Gordon Hayward added 22 points off the bench for the Utah Jazz as they held off a furious fourth-quarter rally to beat the Miami Heat 104-97 Monday night at EnergySolutions Arena.
LeBron James finished with 32 points, but the Miami star made several crucial errors down the stretch.
The Heat (24-12) were unable to complete off a comeback that saw them trim the Jazz's 21-point, third-quarter lead down to two with 3:32 remaining before Utah finished the game with a flurry.
Miami lost for the third time in four games on a six-city Western swing.
The Jazz, playing for the fourth time in six nights, improved to 21-19 after mounting their own comeback in the first half.
The Heat were within two when James made a couple of uncharacteristic errors that saved the day for the Jazz.
First, James was called for goaltending on a short Hayward shot. James then was called for an offensive foul against Jefferson while driving to the basket.
Jefferson hit two free throws, James followed that with a missed 3-pointer, and then Hayward hit one of two foul shots to give the Jazz some breathing room at 98-91 with 2:03 remaining.
Miami's Dwyane Wade finished with 11 points, five rebounds and four assists. The star guard didn't play in the fourth quarter, and Chris Bosh played sparingly in the final quarter. Bosh wound up with 16 points and just one rebound.
Paul Millsap had 17 points and nine rebounds, and DeMarre Carroll added 12 points for the Jazz. Utah has won two in a row and six of eight to climb two games above .500 for the first time since Dec. 18, when it was 14-12.
Millsap made a key offensive rebound for the Jazz after a missed Jamaal Tinsley 3-pointer with a minute remaining.
On the Jazz's second chance, Hayward hit a fade-away jumper after burning Ray Allen. That gave the Jazz another seven-point lead with 40.4 seconds remaining.
The clincher came when James' pass with just under 30 seconds remaining sailed through Bosh's hands.
Miami jumped on the Jazz early, going ahead 18-12 and looking to repeat the blowout win it had at AmericanAirlines Arena last month.
But the Jazz, who won a last-second, one-point thriller in Utah last March, surged back after a Randy Foye 3-pointer ignited a 10-0 burst.
Carroll scored 11 points and Hayward had 10 during a stretch in which Utah outscored the Heat 38-15 to take a 50-33 lead.
The Jazz shot a sizzling 67.6 percent in the first half against the Heat, who trailed 59-44 at the break despite hitting half of their shots and getting 20 first-half points from James.
NOTES: Heat forward Shane Battier sat out his third game in a row with a strained right hamstring. ... Jazz forward Marvin Williams started after a three-game absence caused by a knee injury. He scored five points. ... James increased his career total to 19,982 points. The 28-year-old admitted becoming the youngest NBA player to reach the 20,000 milestone would be significant. "It means I've been able to stay healthy, for one," he said. "I've been able to be around teammates that allow me to play at a high level. It is more than a number." ... Jefferson on the Heat's starting center: "Chris Bosh is like a wing trapped in a big man's body. He's always been one I hated to guard throughout my whole career. ... He can shoot it. He can drive by you, left or right. He's a talented offensive player." Bosh laughed at Big Al's description: "No, I don't think so. I just like to take advantage of what I can do well. I like to go inside and out. If have opportunities in the post, I want to play in the post. With LeBron and Dwyane attacking the rims, I know that a lot of my looks come from the perimeter." ... Jazz coach Tyrone Corbin said his car thermometer showed 2 degrees en route to the team's shootaround. "It's cold for here," he said. With a laugh, he added, "We should have let (the Miami) guys stay out for a while."