CHARLOTTE, N.C. (AP) -- Tyler Johnson and Wayne Ellington scored 16 points each and Miami held off a late rally for a 104-98 victory over the Charlotte Hornets on Friday night.

It was Miami's 24th win in its past 30 games against Charlotte, which opened a stretch of six of seven home games with a loss. Johnson and Ellington combined for 10-of-16 shooting on 3-pointers.

Ellington was the game's only double-digit scorer at halftime. His 3 with 9 minutes remaining put Miami up 89-75. Josh Richardson, Kelly Olynyk, Bam Adebayo and James Johnson added 11 points each for Miami (14-14). Dion Waiters scored 10 for the Heat.

Kemba Walker led Charlotte (10-18) with 23 points after leaving the game in the first half with a wrist injury. He returned to start the second half with his left wrist wrapped, and his 3-pointer with 3:16 left pulled Charlotte within 100-93.

Walker drew a foul against Johnson, his fifth, with 2:02 left. His free throws closed the gap to 100-96, and Dwight Howard's driving layup brought the Hornets within 100-98. Waiters hit a fadeaway for Miami's first basket in more than 2 minutes and a 102-98 lead.

Miami pulled away with free throws from Goran Dragic for the final margin.

Michael Kidd-Gilchrist shot 6 of 8 for 13 points for Charlotte, which has lost four of five. Howard recorded his fourth double-double in five games for Charlotte with 15 points and 16 rebounds. It was his 16th double-double this season.

Jeremy Lamb added 12 points off the bench for the Hornets.

Charlotte, which trailed by as many as 12 in the first half, cut the deficit to 53-47 on Michael Carter-Williams' free throws with 3.8 seconds left until halftime.

Frank Kaminsky finished with 10 points for Charlotte.