Pegged to be one of the league's worst teams, the Sixers (3-0) have opened the season with wins over Chicago, Washington and two-time defending champion Miami.
Carlos Boozer led the Bulls with 22 points and 10 rebounds and Luol Deng had 20 points.
Still dealing with neck soreness, Derrick Rose finished with 13 points and six assists for Chicago.
After trailing by as many as 18 points in the second half, the Sixers took a 100-99 lead with 3:29 left when Carter-Williams picked up a loose ball and calmly laid it in. It was the Sixers' first lead since 11-10.
Rose hit a 3-pointer with 2:12 left to put the Bulls in front 104-102, but the 2011 MVP committed turnovers on Chicago's next two possessions, allowing the Sixers to tie the game on a layup by Evan Turner and then take a 105-104 lead when Turner made one of two free throws.
With 5.9 seconds left, Hawes made a jumper to put the Sixers ahead 107-104. Deng missed a potentially game-tying 3-pointer at the other end to send the home crowd into a frenzy.
The Bulls mostly controlled the game in the first half, closing the first quarter on a 24-11 run before increasing their lead to 20 points late in the second quarter.
But a 3-pointer from Hawes followed by a driving layup through traffic from Carter-Williams cut the Bulls lead to 79-74 with just under 5 minutes remaining in the third quarter, getting the crowd back into the game after a lifeless first half.
The Sixers had a chance to take the lead after three quarters but a pull-up jumper by Darius Morris rolled around the rim and out at the buzzer.
The Bulls shot 57.4 percent from the field in the first half but finished the game shooting 45.2 percent.
The Sixers shot 48.8 percent from the field and 50 percent from 3-point range.
Turner finished with 20 points, Thaddeus Young scored 13 and reserve Tony Wroten contributed 11.
NOTES: Before Saturday's loss, the Bulls had won five straight over the Sixers, dating to the 2011-12 season. . Saturday's game marked the first of four straight at home for the Sixers. . Sixers coach Brett Brown used all 11 available players on his roster for the first time this season. Rookie Brandon Davies made his NBA debut and banked in his first shot.