MIAMI — Nikola Jokic's numbers were big, as usual.
And his shooting touch at the end was perfectly soft.
Jokic had his fourth triple-double of the season — 29 points, 11 rebounds and 10 assists — and his high-arching shot in the lane with 2.4 seconds left lifted the Western Conference-leading Denver Nuggets to a 103-99 win over the Miami Heat on Tuesday night.
"That's my kind of shot," said Jokic, who now has 20 career triple-doubles. "I love floaters, all kind of floaters."
Jamal Murray had 18 points, Trey Lyles added 15, Paul Millsap had 12 and Torrey Craig finished with 11 points and 16 rebounds for the Nuggets, who outrebounded Miami 50-38 and had a 23-11 edge in second-chance points.
It came on the second night of a back-to-back that started Monday in Houston, and without Gary Harris — sidelined with left hamstring tightness.
"Hell of a win," Nuggets coach Michael Malone said. "I don't know if it's a statement win or not. But it's a win where we had every reason to use an excuse for the loss. And we don't want to be a team that makes excuses. We want to be a team that finds ways when everything is stacked against us."
Dion Waiters returned to the lineup and scored 15 points for Miami, which got 13 apiece from Bam Adebayo and Kelly Olynyk, and 12 each from Hassan Whiteside, Josh Richardson and Justise Winslow.
It was Waiters' first time playing in Miami since December 2017. He missed more than a year after ankle surgery.
"A healthy me, that's all I can ask for," Waiters said. "I can just go out there and play. I don't have to worry about anything."
A back-and-forth fourth quarter saw the Heat get down by six, then take a six-point lead after a 12-0 run, and rally from four points down to tie it in the last 2 minutes — with Adebayo getting both of those baskets, the second one coming with 22.9 seconds left.
That's when Denver went to Jokic, who took a bounce pass from Murray and dropped in what became the biggest shot of the night. Miami's chance to tie went awry when Olynyk's lob for Richardson on the inbounds attempt sailed out of bounds — just the sixth Heat turnover, yet the most costly one.
"We did enough things to put ourselves in a position to win," Heat coach Erik Spoelstra said. "They just made more plays down the stretch. Simple as that."
Nuggets: Harris went through some efforts to get loose before the game, but was ruled out about an hour before tip-off. Malik Beasley started in his place. ... Isaiah Thomas (right hip surgery) went through a shooting session before the game. He hasn't played yet this season, but got to exchange jerseys with Heat star Dwyane Wade postgame.
Heat: Waiters' minutes came at the expense of Derrick Jones Jr., who didn't play. ... Miami announced another sellout crowd, which means Thursday's game against Boston could be the team's 400th consecutive sellout at home. ... The Heat were only 15 for 25 from the foul line.
Udonis Haslem is continuing to lean toward retirement after the season, saying Tuesday he is "90 per cent" certain that his 16th year with the Heat will be his last. Haslem said in September that he is retiring, and hasn't wavered much since. "There's a huge life outside of basketball that I've been preparing for and that's been waiting for me," Haslem said. The Heat still value his leadership, and may want him back next season.
Nuggets guard Brandon Goodwin finished his college career at Florida Gulf Coast — "Dunk City" — about 120 miles from Miami, and was the Atlantic Sun Conference Player of the Year last season. He's made a quick impression on the Nuggets. "Brandon's been great for us. He's a terrific young man," Malone said.
Nuggets: Host the Los Angeles Clippers on Thursday, the midpoint of a five-game, seven-night run for Denver.
Heat: Host Boston on Thursday, the first of four meetings this season between the clubs.
More AP NBA: https://apnews.com/tag/NBAbasketball and https://twitter.com/AP_Sports