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
Power Rankings: Put Kentucky in the top tier now, please
UK has teased us before, but Saturday's takedown of top-ranked Tennessee was impossible to fake.
Colorado sends Arizona to 7th straight loss, 67-60.
Lucas Siewert and McKinley Wright IV led the Colorado Buffaloes to a 67-60 win over Arizona on Sunday night, sending the Wildcats to their first seven-game losing streak in 36 years.
Chatman scores 17, Popovic 15 as Boston College beats Miami
Jordan Chatman finished with 17 points and Nik Popovic had 15 to carry the Boston College offense with star Ky Bowman under the weather in a 64-57 win over Miami on Sunday night.