With Jimmy Butler as his primary defender, James scored 17 points on 8-of-23 shooting from the field. In addition, James did not attempt a free throw in a game for the first time since Dec. 2, 2009.
Butler recorded 16 points, 11 rebounds, four steals and one block. His block came against James in the final second of regulation.
Joakim Noah had 20 points, 12 rebounds, seven assists and five blocks for the Bulls, who have split the first two games of a six-game homestand. D.J. Augustin tallied 22 points.
"I want what they have -- a championship," Noah said. "One day, we're going to have to get through those guys."
Dwyane Wade ended with 25 points for the Heat, who have lost three in a row. Chris Bosh donated 15 points.
The Heat extended their lead to 74-62 on James' slam with 10:16 left in regulation.
But the Bulls scored the next 13 points to go in front. Butler capped the surge with a pair of free throws to make it 75-74.
It remained close and the game was tied at 84 on James' layup with 1:10 remaining. Wade followed with a steal before making two free throws with 29.2 seconds left.
Kirk Hinrich responded with a layup at the other end to tie the game. The game went to overtime after Butler stripped the ball away from James as he went up for a layup with less than one second remaining.
"I dropped the ball. It's like a double entendre," James said. "I actually dropped the ball, but I dropped the ball on my team. I had it. That's a great play. I give a lot of credit to Jimmy. He got his hand on the ball, but I had the lane. I had the layup."
Chicago dominated the extra session, which Augustin started with a 3-pointer. The home team scored the first nine points of overtime and never looked back.
Earlier, the Bulls led 21-19 after the first quarter. Miami, however, controlled the pace of play in the second period and took a 43-37 lead into the locker room.
The Heat led 67-59 after three quarters of play.