AMHERST, N.Y. -- Coach Nate Oats could overlook Buffalo's cold-shooting offense given how his team's defense smothered Ball State from nearly start to finish.
Defensive specialist Dontay Caruthers scored 21 points and No. 18 Buffalo cruised to its 21st straight home victory, 83-59 over Ball State on Tuesday night.
"I thought that was the best defense we'd played for most of the game," Oats said. "Offense was a major struggle tonight, but you can control your defense, your effort, your rebounding. You can't always control whether your shots go in."
CJ Massinburg had 16 points and nine rebounds for the Bulls, who forced 18 turnovers, scored the first seven points and never trailed.
And Oats wasn't altogether unhappy with his offense, which hit just 32 of 74 attempts, including 7 of 31 from 3-point range.
"Bad as we were on offense, we still managed to score 83 points," Oats said.
Buffalo (19-2, 7-1 Mid-American Conference) hasn't dropped a home game since a 73-62 loss to St. Bonaventure on Dec. 2, 2017. The 21-game streak is the second longest in the nation behind No. 13 Houston's 30 in a row at home.
The Bulls also matched their best record through 21 games, set by the 1964-65 team that finished 19-3.
Ball State coach James Whitford said injuries, foul trouble and Buffalo's relentless pressure simply wore down his team.
"We've played Virginia Tech, we've played Purdue, we've played at Loyola (Chicago), and I will say this, athletically, Buffalo's the most athletically gifted of those teams that we've played," Whitford said. "We didn't play our best certainly, but they certainly had a lot to do with it."
Ball State hit just three of its first 16 attempts, including missing its first eight 3-point attempts, and fell behind 21-8 on Massinburg's putback of Ronaldo Segu's miss with 8:09 left in the first half. The Cardinals entered the game coming off a 78-74 loss at Ohio on Saturday in which Ball State hit one of its final 10 attempts over the final 5 1/2 minutes.
The Cardinals were shooting as cold as the conditions were wintry outside, where a lake-effect storm was forecast to drop between and 1 and 2 feet of snow on the region through Wednesday night.
Mother Nature even played a role after a flash of lightning caused a large portion of the lights to go out inside Alumni Arena during halftime. The game was delayed for about 20 minutes before the lights fully returned with Buffalo leading 35-22.
Once Oats was informed of the delay, he sent his players to the half-lit court to work on their shooting.
It paid off.
After going 13 of 37 in the first 20 minutes, Buffalo closed by hitting 19 of its final 37.
The Bulls eventually started putting on a show to spark what became a 12-2 run.
Jeremy Harris hit Montell McRae for an alley-oop to put Buffalo up 50-36. Davonta Jordan set up Jayvon Graves for an alley-oop 30 seconds later. And then Harris got the crowd on its feet by capping a transition drive with a dunk.
"That's one thing we talked about before the game is just trying to have fun," Massinburg said. "In basketball, the best way to have fun is to get stops and run off your defense. And our defense was pretty good today."
Massinburg's game-opening basket on a hook shot put him over 1,700 points for his career. And with his 10th point, he moved ahead of Mike Martinho (1,708) for fourth on the school list.
The already injury-depleted Cardinals lost starter Trey Moses, who hurt his left knee after Caruthers scored on a transition layup early in the first half.
Whitford didn't have a definitive update except to say initial tests showed no damage to Moses' knee ligaments.
Ball State also continues playing without two regular contributors. Sophomore forward Brachen Hazen (back) missed his 13th consecutive game and sophomore guard Ishmael El-Amin (wrist) sat out his ninth straight. Hazen is expected to return before the end of the season.
Ball State: The Cardinals looked nothing like a team that had four of five MAC losses decided by a combined 13 points. Injuries are an issue, but that doesn't entirely explain how sloppily the Cardinals played.
Buffalo: Since they were in control from the opening tip, it was easy to overlook the Bulls' poor shooting from long range and at the free-throw line, where they went 12 of 24.
Ball State: Host Kent State on Saturday.
Buffalo: Travels to face Bowling Green in a Friday night matchup of the MAC East Division's top teams.
More AP college basketball: https://apnews.com/Collegebasketball and https://twitter.com/AP-Top25
Bills GM says Pats are still the team to beat. Does PTI agree?
Buffalo Bills GM Brandon Beane says even with Tom Brady gone, the Patriots are still the team to beat and Tony Kornheiser and Michael Wilbon agree.
Former Wake Forest basketball coach Carl Tacy dies at 87
Former Wake Forest and Marshall basketball coach Carl Tacy has died at 87.
DePaul extends coach Dave Leitao's contract through 2023-24
Dave Leitao, who guided DePaul to a 16-16 record this season and has a 122-132 mark in eight overall seasons with the Blue Demons, has been extended through the 2023-24 season.