Miami won its fourth straight and handed Houston its fourth loss in a row. The winning streak comes after the Heat lost seven of their previous eight.
“We’re just gaining more and more confidence," Butler said. “We know what we’re capable of and we know what we want to do."
Butler had his first triple-double of the season and 10th overall. The Heat came close to having two players with triple-doubles, with Bam Adebayo finishing with 10 points, 13 rebounds and eight assists before fouling out with about a minute left.
Miami trailed by 13 in the first half, but used a big run and great defense in the third to take a 12-point lead into the fourth quarter. They remained up by 12 after a dunk by Adebayo before Houston used a 9-0 run to get to 97-94 with less than a minute to go.
The Heat missed two shots after that but got the rebound both times, with Butler grabbing the second one. He was fouled and made two free throws with 10 seconds to go and the Heat added two more free throws in the final seconds to secure the win.
“It wasn’t a beautiful game by any means... but we found a way to grind it out and get the win," Heat coach Erik Spoelstra said.
Miami's last three games have been decided by seven points or fewer.
“I’ve seen some great development of mental toughness and grit," Spoelstra said. “Unfortunately some of our best games have been losses on the road, but that develops this grit. It doesn’t happen overnight."
“We just missed a lot of shots and they made shots," Wall said. “We just have to do a better job of closing out quarters... and I have to do better as a leader of this team."
Miami pushed the lead to 15 on a 3-pointer by Max Strus with about eight minutes to go before Houston used a 10-3 spurt to get within 88-80 three minutes later. Strus had a career-high 21 points and tied a career mark with five 3s.
“I’m happy for Max... he had just as much to do with us winning as I did," Butler said, after brushing off talk about his triple-double.
A 3-pointer by John Wall got the Rockets within seven not long after that, but Miami scored the next five points to pull away again — 95-83.
The Heat used a 12-0 run to take a 70-59 lead in the third quarter and limited the Rockets to just 10 points in the quarter.
Heat: The team learned shortly before game time that Tyler Herro would not be available in accordance with the NBA’s health and safety protocols, which would mean he either tested positive, had an inconclusive test or was flagged because contact tracing data suggested that he may have been exposed to someone else positive for COVID-19. The Heat were scheduled to fly to Salt Lake City later Thursday night. It was not immediately clear if Herro would be cleared to fly with his team there, if he would remain behind in Houston, or return to Miami. If Herro is forced to stay behind, it might only mean they didn’t get a new test result back.
Heat: Play the second game of a seven-game trip at Utah on Saturday.
Rockets: Begin a three-game trip at New York on Saturday night.
AP Basketball Writer Tim Reynolds contributed to this report.
Nunn glides to drop the hammer on big dunk
Kendrick Nunn drives unimpeded to the basket and flies to the basket to hammer home a powerful slam for the Heat.
2021 NBA playoffs: Everything at stake on the last day of the regular season
Ahead for NBA playoffs, here's what's on the line ahead of the finale of the 2020-21 season.
Giannis flexes and growls after and-1 flush
Giannis Antetokounmpo puts on a mean face and flexes his muscles after he gets the inside pass and rises up through contact to force down a dunk for the Bucks.