SALT LAKE CITY — The Miami Heat have been one of the worst offensive teams in the league this season, ranked No. 27 in points per game. Offence, however, wasn't an issue Thursday night.

Goran Dragic scored 27 points and the Heat continued to play better on the road with a 111-110 victory over the Utah Jazz.

James Johnson scored a season-high 24 points off the bench and Wayne Ellington added 17 for the Heat, who have five of their seven wins on the road.

"That is a good defence to be able to do that against," Heat coach Erik Spoelstra said. "Sometimes you need great players to make bigger plays against a good defence. That is what those guys are doing. Getting a little more organized offensively, the guys are getting a little more confident in their roles and simplify a bit."

The Jazz had the ball with 3.9 seconds remaining and Gordon Hayward missed a contested midrange jumper before time expired.

The Heat attacked the rim relentlessly throughout the game to score 64 points in the paint. The Jazz allowed a season-high 58 points in the paint to the Heat in mid-November.

Hayward scored a season-high 32 points and added seven assists. Joe Johnson chipped in 18 points as the Jazz lost despite knocking down a franchise-record 17 3-pointers in 30 attempts.

A 6-0 run to start the fourth quarter gave the Heat a 12-point lead and Miami barely hung on the rest of the way.

"It takes grit," Ellington said. "It takes toughness and that is what we showed all night long."

The Heat took a 52-48 lead into halftime thanks to a 19-2 run highlighted by eight points from Ellington. The Jazz answered with a 12-2 stretch to close the half.

The Jazz came into the game allowing just 38.9 points per game in the paint, tied for No. 4 in the league.

"We were soft at the beginning of the game," Jazz coach Quin Snyder said. "We didn't deserve to win the game. Miami outplayed us. By the time we woke up defensively, it was late and we had to expend a lot of energy. We lacked physicality, particularly in the first half."

TIP-INS

Heat: Josh Richardson did not travel due to a sprained right ankle. ... Dion Waiters missed his third consecutive game with a pectineus (groin) tear. ... Luke Babbit left the game in the second quarter with a right hip flexor and did not return.

Jazz: George Hill did not play due to a sprained left big toe. ... Rodney Hood did not play due to hamstring injury. ... Joe Johnson, Boris Diaw and Dante Exum all started due to injuries. ... Snyder believed there should have been more than 3.9 seconds left for the final possession.

DANTE'S INFERNO

Exum returned to the starting lineup with Hill out despite seeing the floor little recently. Exum had played less than nine minutes in the previous four games, including not playing at all Monday. Snyder said Exum isn't playing as much after starting 41 games as a rookie, in part, due to an improved roster. Still, Exum has struggled this season.

"He's probably tired of me talking to him," Snyder said. "You can't talk to a player every time there's any kind of change. ... By and large I'd like to think our guys have a clear understanding of what we want from them individually and how that fits into what we're trying to do as a team.

"Dante's going through some things right now that are akin to what a lot of people go through as a rookie. ... People just need to be patient and understand who he is and where he is. In a lot of ways he's better than he was his rookie year."

QUOTABLE

"Everything we've been doing defensively, as far as executing our game plan, we didn't do tonight," Hayward said. "You see what happened because of that. That has to be our calling card. It wasn't at all tonight."

UP NEXT

Heat: Miami travels to face an underachieving Trail Blazers team featuring Damon Lillard.

Jazz: Utah hosts the Nuggets on Saturday. The teams have split their first two meetings this season.