SPOKANE, Wash. -- Gonzaga is one of the nation's elite offensive teams. On Thursday night, the Zags showed they can also grind out a defensive win.
Johnathan Williams scored 14 points and grabbed 12 rebounds as Gonzaga edged stubborn San Diego 69-59.
"We kind of needed it," Gonzaga's Zach Norvell Jr. said of the grinder. "We want to see what kind of guys we've got."
Norvell had two clutch 3-pointers in the closing minutes to keep the Zags ahead. The game featured poor shooting by both teams, and was close throughout.
"We got punched in the mouth a couple of times," Gonzaga coach Mark Few said. "We reacted the right way."
Norvell, who finished with 13 points, has got a knack for late game heroics, Few said.
"He's got a lot of confidence in himself," Few said of the freshman from Chicago.
Olin Carter III scored 21 points for San Diego (15-8, 6-5), a surprise team in the league this year.
"I thought we did a great job defensively," San Diego coach Lamont Smith said. "We just had a hard time boxing out."
"We gave them too many second chance opportunities and it's hard to do that and win on the road."
Gonzaga had 14 offensive rebounds they converted into 24 points. They outscored the Toreros 38-20 in the paint.
But neither team shot well, with Gonzaga making 41 percent and San Diego just 33 percent from the floor. In the first, Gonzaga went on a 12-0 run while the Toreros were in the midst of a 1 for 9 slump to take a 31-20 lead.
Gonzaga led 36-27 after a first half in which they held San Diego to 27 percent shooting (8 of 30).
San Diego opened the second half with a 13-2 run, including a pair of 3-pointers by Tyler Williams, to take a 40-38 lead.
But the Toreros did not score for more than eight minutes, missing 12 shots, and Gonzaga replied with an 11-0 run for a 49-40 lead. San Diego stormed back and Isaiah Pineiro's 3-pointer brought them within a point at 51-50. But it was a last gasp as Gonzaga closed the game on an 18-9 run.
Norvell hit a 3 to lift Gonzaga to a 61-54 lead with 3:02 left.
The teams traded baskets, but the Toreros could not make up ground.
The win lifted Gonzaga to a 21st consecutive year of at least 20 wins, and Few took a moment to bask in the achievement. "People think they (20 wins) magically land here in Spokane," Few said. "They don't. We're an anomaly. It's still an accomplishment."
San Diego made just 20 of 61 shots. Gonzaga made 25 of 61.
San Diego: The Toreros came in on a two-game winning streak and are fourth in the league. They are one of the nation's top defensive teams, limiting opponents to 64 points per game.
Gonzaga: The Bulldogs have won four in a row since losing to No. 13 Saint Mary's. The Zags have never lost to the Toreros in the McCarthey Athletic Center since it opened in 2004. Gonzaga is the only team in the nation that has six players averaging in double figures and is third in the nation with an average of 88.2 points per game.
San Diego: It doesn't get any easier for the Toreros, who host No. 13 Saint Mary's on Saturday.
Gonzaga: The Bulldogs on Saturday host BYU, the only team to defeat them in the regular season last year. Gonzaga's only other loss was to North Carolina in the NCAA title game.
More AP college basketball: https://collegebasketball.ap.org and https://twitter.com/AP-Top25
Grand Canyon wins home opener, routs Delaware State 89-47
Trey Drechsel and Oscar Frayer each scored 15 points and Grand Canyon rolled to an 89-47 victory over Delaware State on Saturday night.
N. Alabama beats back scrappy Blue Mountain for 72-59 win
Jamari Blackmon scored 22 points and Payton Youngblood scored 15 and North Alabama pulled away from NAIA Blue Mountain for a 72-59 win Saturday night.
Idaho State comes from 18 down to beat Boise State, 72-70
Chidi Udengwu hit two free throws as time expired as Idaho State battled back from 18 points down in the second half to spoil Boise State's season opener, 72-70 on Saturday night.