Chicago's Luol Deng hit an 18-foot pull-up jump shot to give the Bulls a 107-105 lead with 3.3 seconds left in overtime. Toronto called a timeout and on the ensuing inbound Amir Johnson got hold of the ball.
Bulls forward Joakim Noah fouled Johnson as he threw the ball, but the referee didn't call a personal foul. Instead, the Raptors had to inbound the ball again with a second left on the clock.
Jose Calderon's shot from three-point range bounced off the rim to seal the Chicago win.
"There was pretty much nobody else to pass to, so I decided to go to the basket and try to draw a foul," said Johnson. "I thought it was a shooting foul but the ref said it was on the floor. You just have to check that call up. I thought I shot the ball.
"I tried to even fall on the floor just to kind of sell the foul a little bit more. I was just trying to get it up as quick as possible because I knew we were running out of time."
Head coach Dwane Casey was also disappointed in the officiating, particularly the non-call on Johnson.
"I hope the league looks at that last play of the game when Amir Johnson gathers the shot going up," said Casey. "I don't know who he's passing to, but I just hope they watch it. I hope they watch it.
"That's all I'm going to say about it, because it's a very questionable, marginal call at the end of the game."
Casey then added: "We'll see what the ruling is."
That missed call ruined a strong performance by Toronto's (14-25) ailing bench. Johnson, who played through a nagging ankle injury after entering the game for Aaron Gray with just over seven minutes left in the first, had five points and 10 rebounds.
Alan Anderson, who had to have a tooth repaired before Wednesday's game after it was damaged Tuesday against the Brooklyn Nets, led the Raptors with 27 points. The six-foot-six guard did most of his damage from beyond the arc, making 4-of-9 three-point attempts.
Kyle Lowry scored 26 points, and added seven assists and five rebounds even after tweaking his ankle in the 113-106 loss to the Nets.
Lowry felt that he and the rest of the reserves had something to prove after Toronto's bench was outscored 43-7 in the Raptors 107-96 loss to the Milwaukee Bucks on Sunday.
"The bench did not play well during the Milwaukee game and we didn't give the team anything," said Lowry. "We made a conscious effort to play better and give the team a little bit more."
Anderson agreed with his partner in the backcourt.
"We just need every guy ready when they come off the bench to give us any kind of spark," said the veteran guard.
The crowd and Casey were obviously frustrated by the officials throughout the game.
With four minutes left to play in the fourth quarter, the 18,674 fans in attendance at the Air Canada Centre started a loud "Ref you suck" chant, while Casey was called for a technical foul with 1:20 left in the third after he argued a call by the officials.
The tech was a long time coming, as Casey has been in the refs' ear for most of the quarter.
Carlos Boozer scored a season-high 36 points and pulled down 12 rebounds for Chicago (22-15). His 21 double-doubles lead the NBA's Eastern Conference. Deng had 19 points and seven assists for the Bulls, while Noah had a double-double with 16 points and 14 boards.
DeMar DeRozan was the Raptors' best starter, scoring 18 points.
The Raptors made it close in the final minutes of the fourth, pulling to within two on Ed Davis's layup with 1:43 left in the quarter. Deng then hit two free throws for Chicago to pull ahead 99-95.
Lowry was fouled on the next play and, after video review, officials decided it was a three-point play. He made two of his free throws to pull Toronto to within two with 1:16 left in the fourth.
Chicago guard Marco Bellinelli made one of his two free throws to give the Bulls a 100-97 lead, but Lowry responded for the Raptors, making a two-foot jump shot. Landry Fields grabbed a key defensive rebound for the Raptors to give Toronto a chance at taking the lead.
Johnson was fouled on a rebound and his first free throw tied it 100-100. Missed shots by both teams forced the extra time.
Anderson made a driving jump shot to make it 104-103 with 1:32 left in the first overtime period. Toronto regained possession on a jump ball, but was stripped of the ball at the other end of the court. He earned his sixth foul of the game trying to recover the ball, ending his night with 54.7 seconds left in overtime.
Chicago guard Nate Robinson hit one of two free throws with 15.1 seconds left in overtime to expand the Bulls' lead to 105-103.
Toronto's reply didn't take long. Lowry tied the game 105-105 with 8.7 seconds to go on a five-foot driving jump shot, forcing Chicago to call a 20-second timeout so head coach Tom Thibodeau could draw up the winning play for Deng.
Notes: Toronto is still missing forwards Jonas Valanciunas (fractured finger) and Andrea Bargnani (torn right elbow ligament/strained wrist). Centre Amir Johnson came off the bench for the Raptors, playing through a nagging ankle injury.