NORTH CAROLINA -- All three Triangle-based ACC teams played at home on Saturday and all celebrated a win.
In Durham, it all looked routine for No. 21 Duke on Saturday. Just the way the rising Blue Devils like it.
Riley Leonard ran for two touchdowns and threw for 219 yards to lead Duke to a 38-14 win over Northwestern.
"We started fast. We got a lead," Duke coach Mike Elko said. "That's what you want to do in a game like this."
Jordan Waters also ran for two touchdowns and Jalon Calhoun caught five passes for 112 yards as the Blue Devils (3-0, 1-0 ACC) opened the season with three straight wins for the second year in a row.
Duke hasn't been threatened in the strong start to Elko's second season.
"If we keep playing how we are, I think we're going to be fine," cornerback Chandler Rivers said.
Leonard rushed for 97 yards and completed 15 of 20 passes in just over three quarters.
Northwestern quarterback Ben Bryant was 17-for-34 for 123 yards with a touchdown and an interception. The Wildcats (1-2, 0-1 Big Ten) had 267 yards of total offense, with 90 of those in the fourth quarter.
"It's OK for it to sting," Northwestern interim coach David Braun said. "We're going to play a much better brand of football next Saturday."
The Blue Devils put together 80- and 94-yard touchdown drives in the third quarter, both ending on Leonard's short runs. Duke, which didn't punt until the fourth quarter, had 268 rushing yards.
"Anytime you're giving up that many yards on the ground, it's going to be hard to have an effective day," Braun said. "When they're staying on schedule, standing in rhythm, they are a very dangerous operation."
Leonard made more nifty moves with the ball and that's something that the Blue Devils continue to benefit from.
"He makes a ton of plays," Elko said. "It doesn't surprise you, but it's certainly impressive."
Waters had the game's first two touchdowns on runs of 24 and 2 yards. It was 17-0 after Todd Pelino's 35-yard field goal less than 21 minutes into the game.
RELATED | ACC changing scheduling model for football in '23 and beyond, no more divisions
Northwestern scored on A.J. Henning's 14-yard pass from Bryant with :34 to play in the first half, pulling within 17-7.
Duke hadn't allowed a second-half point this season until Northwestern's late touchdown.
Tar Heels win
In Chapel Hill, Drake Maye threw for a season-high 414 yards to go with two touchdowns, Nate McCollum flirted with a single-game UNC receiving record and No. 20 North Carolina pushed past Minnesota 31-13 on Saturday.
Maye overcame two interceptions and ultimately provided the only reliable source of offense for the Tar Heels (3-0), who were unable to run the ball against one of the nation's top defenses but still posted 519 yards.
"He is so confident and he never changes his demeanor on the field at all," UNC coach Mack Brown said of Maye. "He just continued to play. He's really hard on himself. ... But what a great performance by him time and time and time again."
McCollum, in his first year at UNC after transferring from Georgia Tech, had missed the season opener with an injury and had just one catch in his debut last week. But he was the clear top target on Saturday, going for 15 catches and 165 yards with a 46-yard contested scoring catch in the first quarter.
At emergency meeting UNC trustees mull options after Tez Walker denial
He ended up falling one catch shy of tying the Tar Heels' single-game record.
Omarion Hampton and British Brooks each ran for short TDs, with Brooks' 1-yard punch-in clinching this one by pushing UNC to a 31-13 lead at the 5-minute mark of the fourth quarter.
Darius Taylor ran for 138 yards and a touchdown shortly before halftime to lead Minnesota (2-1), but the Gophers generated little else beyond the dynamic running from the true freshman. Athan Kaliakmanis threw for just 133 yards on 11-for-29 passing, and that played a big role in Minnesota converting just 3 of 12 third downs.
"I feel like everybody showed up but me, honestly," Kaliakmanis said.
Wolfpack Wins
In Raleigh, Brennan Armstrong piled up 303 yards of total offense and North Carolina State routed VMI 45-7 on Saturday afternoon.
Armstrong led N.C. State (2-1) by completing 27-of-32 passes (84%) for 264 yards and a touchdown and rushing for 39 yards on six carries. His completion percentage was a career-high mark for the sixth-year quarterback when attempting at least 11 passes in a game.
"It feels good. This game was kind of our bounce-back game after coming off a loss against Notre Dame, not playing really well, especially offensively," Armstrong said. "This was a great game for us, to just get back on track and play efficient."
After forcing the Keydets (1-2) to a three-and-out to start, N.C. State got on the scoreboard with a 12-play, 58-yard drive that ended with the first of two rushing touchdowns from Delbert Mimms. About a minute later, the Wolfpack scored again when fifth-year defensive back Robert Kennedy picked off an errant VMI pass and returned it 30 yards for a touchdown.
Those scores led to a 31-point Wolfpack scoring run before VMI responded in the third quarter, with Collin Shannon finding Egypt Nelson for a 22-yard touchdown pass. Nelson proved to be a thorn in the Wolfpack's defense with 107 yards receiving on three receptions.
N.C. State countered as sophomore Julian Gray ran back the ensuing kickoff 82 yards for the first touchdown of his collegiate career.
"(N.C. State) kind of put us in a place early that we were just having to play catch-up, and it was uphill the whole stinking game," first-year VMI coach Danny Rocco said. "So, that was difficult, and certainly not the way we wanted this thing to play out."
Rocco didn't play quarterback Collin Ironside, who had started VMI's previous two games. Rocco said he practiced "minimally" this past week and it was "in his best interest to not play" against N.C. State.
RELATED: 'Crushed.' UNC coach Brown reacts to NCAA's Tez Walker eligibility decision
WATCH | ACC Presidents and Chancellors vote to extend invites to SMU, Cal and Stanford