Giannis Antetokounmpo came back from an eight-game absence with a calf strain, helping the Milwaukee Bucks snap the Chicago Bulls’ five-game win streak. The Greek Freak had 29 while Ryan Rollins stepped up in key moments to finish with 20. No Bull had more than Nikola Vucevic and Coby White, each with 16.

While Giannis loudly announced his return by blocking Matas Buzelis at the rim, the Bucks turned it over on their first two possessions with bad passes, forcing a timeout from Doc Rivers just 81 seconds into the game. Chicago opened on a 10-3 run, but Milwaukee got back into it quickly with a 10-4 run, highlighted by a Giannis triple. Consecutive turnovers by Josh Giddey gave Milwaukee their first lead of the game with 4:53 left in the frame, and a bench lineup anchored by Kyle Kuzma briefly extended it to five. Though it tightened back up, the visitors finished the first ahead 28-26.

On a minute restriction, Giannis exited with 5:48 left in the first, but the Bucks held their own without him well into the second. Four Bulls turnovers in the opening three minutes resulted in a seven-point Milwaukee advantage as Giannis and Myles Turner re-entered at 8:22. And man, did they get rolling. An 8-0 run featured three consecutive Giannis dunks and put the Bucks on top by 13 under two minutes later. Giannis made that four off a nice feed from Kevin Porter Jr. before hitting the pine for the last five minutes. The starters plus Kuz didn’t let it get closer than seven until the closing minute, when two late turnovers—their first since the 10:41 mark of the first—closed the gap to 54-50 Bucks at half.

Both sides traded threes for several minutes out of the locker room, but the Bulls started racking up whistles to keep the Bucks up by as much as eight. Giannis’ shift was done after just over five minutes, and Chicago took advantage with a 7-0 run, slicing their deficit to one. Stop me if you’ve heard this before, but offensive rebounding and turnover woes plagued Milwaukee during this stretch as Chicago extended that run to 14-5 and jumped in front with about two minutes left. Badly needed threes by Harris and Bobby Portis, plus Giannis checking back in, staunched the bleeding as the third ended with the Bucks leading 85-80.

Milwaukee couldn’t really hold serve as the fourth began, even with Giannis. He sat with 8:52 remaining, and it was up to the bench bigs, who barely clung onto the lead in the next three minutes before Giannis and Turner were back just past the midpoint. The starters soon reassembled, right around the time when Rollins hit two huge threes. He then grabbed a big offensive board 53 seconds later, which Turner paid off at the rim and made it a six-point game. AJ Green then made it nine with a trey, but four quick Vucevic points made it 103-100 with 90 seconds left. Giannis committed an offensive foul, hit two free throws, made a layup, and had an inbounds violation in that stretch, so they needed a defensive stop with 33 seconds to go, and they got it. Giannis did throw down a fast-break dunk with two seconds on the clock, which drew tons of boos from the United Center crowd and sparked a postgame scuffle. More on that in the extended recap.

Milwaukee shot just 22.2% from deep in the first half to Chicago’s 53.3% on three more attempts. But in the second, they flipped that number on its head, shooting 50% to the Bulls’ 21.7%, despite taking five fewer attempts.