"It was by far our best game of the year," Heat coach Stan Van Gundy said. "The turnovers  were still too high. But we played the game very well. We did a great job moving the ball. We got up 28 points, which was great."
Sean May scored 18 points, Kareem Rush had 15 and Primoz Brezec added 11 for Charlotte, which lost its fourth straight. The Bobcats (2-5) trailed by 20 points with 2:10 remaining in the game before making the final score close.
"We didn't surrender," Bobcats coach Bernie Bickerstaff said. "We kept playing and didn't quit. That shows you that you should never surrender."
Van Gundy did not appreciate the Charlotte reserves pressing his reserves in the final minutes.
"I'll never let somebody do that again," Van Gundy said. "If they're gonna press, I'll leave my best players in the game and win by 40."
Udonis Haslem added 14 points and 11 rebounds for the Heat (4-3), who were without O'Neal (sprained right ankle) for the fifth straight game.
Miami forward Antoine Walker did not start for the first time in 611 games in which he appeared.
"It was different, but I'll get adjusted to it," Walker said. "If it's gonna be a better team, and it's gonna help us win games, I have to adjust to it."
Leading 35-32 less than a minute into the second quarter, Miami went on a 20-5 run during the next seven minutes to take control. Walker, who finished with 12 points and nine rebounds, hit two 3-pointers during the spurt.
Williams was 8-for-14 from the field and the Heat shot 56.8 percent overall.
"I'm keeping things pretty simple and the shots are going in," said Williams, who made four 3-pointers. "Maybe I'm just a little more aggressive on the pick and roll, and maybe I'm looking to shoot a little more now."
Charlotte, which failed to get closer than 11 points in the third quarter, trailed 88-62 heading into the final period.
"It's an adjustment for us to come in off the bench and play hard, but we didn't even look at the score," May said. "Our job was to go in and give it our best effort and try to cut down the lead, and that's what we did."
Bobcats leading scorer Gerald Wallace (right wrist) missed his second straight game.
The Heat outrebounded Charlotte 34-15 while building a 59-43 halftime lead.
Mourning and Williams each had 10 points to help the Heat open a 35-27 lead after the first quarter -- Miami's highest-scoring period this season.
Miami forward James Posey, sidelined the season's first five games with a sprained right thumb, made his first start in place of Walker. Posey was activated before Thursday night's win against Houston. ... Charlotte center Melvin Ely (sore shin) did not play. ... Miami is 3-2 this season without O'Neal.