Atlanta had five scorers in double figures. Mike Bibby had 13 points, Al Horford added 12 and Josh Smith and Jamal Crawford each had 11.
Only two Miami scorers joined James in double figures. Chris Bosh had 14 points and 14 rebounds, and Udonis Haslem added 10 points.
Bibby's 3-pointer tied it at 88, and the veteran point guard added another basket for a 90-88 lead the Hawks would not lose. Marvin Williams, who had nine points and 11 rebounds, iced the win with a 3-pointer with 1:06 remaining.
James played 38 minutes, his most of the preseason. He had 11 rebounds and made 13 of 19 free throws.
Attendance was 15,197, about double the previous preseason average for Atlanta. Each of the Hawks' first two home preseason games drew fewer than 8,000. Celebrities in the crowd included NBA legend Julius Erving and Atlanta Braves All-Star Jason Heyward.
Many in the crowd apparently showed up to boo James. He was booed in pregame introductions, the first time he touched the ball and again after his first rebound. There were even louder boos when he re-entered the game after a rest.
The teams will close their preseason schedules tonight. Atlanta plays at Charlotte, and Miami will return home to face Orlando.