Charlotte 49ers coach Will Healy propped his son Eli up on his lap at his postgame news conference and tried to hold back tears as he took in the magnitude of the moment.

The 49ers football program had just taken a huge step forward — and he knew it.

Chris Reynolds threw for 324 yards with three touchdowns, including an 11-yard scoring strike to Shadrick Byrd with 33 seconds left and Charlotte knocked off Duke 31-28 on Friday night for the school’s first ever win against a Power Five team.

"I get the emotional side from my dad," Healy said. "He cries about everything and I think I’m becoming like that."

CLICK HERE FOR MORE SPORTS COVERAGE ON FOXNEWS.COM

There were times Healy wondered if he and his staff were headed in the right direction, and having nine games from their original schedule in 2020 cancelled or postponed due to Covid didn't help matters. The team wound up only playing six games last season — often scrambling to find an opponent to play — and won two of them in what amounted to a lost season.

"When that happens, you feel like you've failed and I wondered, ‘What could I have done better,’" Healy said.

But the frustrations and the frowns turned to smiles on Friday night as Healy watched the student section storm the field after his team won a game that featured six lead changes, including four in a wild fourth quarter.

Victor Tucker had eight catches for 133 yards and Grant DuBose, a transfer from Division II Miles College, caught four passes for 128 yards and two touchdowns for the 49ers, who avenged a 53-19 loss to the Blue Devils last season.

Charlotte was 0-6 against power-conference schools all-time — including 0-3 against Atlantic Coast Conference schools — in its first nine seasons as a program.

"It’s a great moment for our university," Healy said.

The 49ers overcame a Duke school-record 255 yards rushing and three touchdowns from running back Mataeo Durant.

"Mataeo is a special player," Duke coach David Cutcliffe said. "His fierceness as a runner. He’s a great finisher and he has been a leader for us."

Durant gave Duke the lead when he raced off right tackle for a 53-yard touchdown with 1:44 left, silencing the home crowd.

But that was more than enough time for Reynolds, a redshirt senior, who led the 49ers on a seven-play, 75-yard touchdown drive. The winning play came a swing pass to the left flat to Byrd, who escaped one defender to score.

The 49ers have been working on an eerily similar hurry-up offense scenario in the weeks leading up to the season and Reynolds felt well prepared.

"When times are tough and it's crunch time, you go back to your training," said Reynolds. "When I looked into the guys' eyes (in the huddle) there was a sharp glare and you felt that energy."

Said Healy: "Every time you wanted to count us out, we found a way to come back and respond."

GUNNAR'S DEBUT

Gunnar Holmberg was 20 of 29 for 258 yards and a score in his first career start for Duke but also had a key fumble inside the Charlotte 5-yard line on a running play.

"We turn it over and they don’t. That’s an age old story," Cutcliffe said.

Duke had 39 turnovers last season.

DUBOSE SHINES

DuBose only had eight receptions for 104 yards while at Miles College, but was a huge star for the 49ers with TD catches of 56 and 9 yards. He made the Charlotte team after an open tryout, which is now allowed by the NCAA.

"It doesn’t even feel real," DuBose said. "I have been taking in this whole week and imagining playing Duke. It’s honestly surreal. I’m not used to the lights and cameras in my face."

THE TAKEAWAY

Duke: Duke failed to get much pressure on Reynolds, who was allowed to pick apart the Blue Devils secondary. However, Duke can really lean on Durant going forward as he was nearly unstoppable at times and had scoring runs of 59, 53 and 5 yards. "Baller. Stud. Unbelievable player," Healy said of Duke's senior running back.

Charlotte: Reynolds proved that he's a winner, repeatedly leading the 49ers back with a refuse-to-lose attitude. He was 9 of 10 for 161 yards and two TD passes on the 49ers’ final two drives. He also ran for a touchdown earlier in the game.

INJURIES

Charlotte: Starting cornerback Geo Howard left the game in the third quarter with an ankle injury and did not return.

UP NEXT

Duke: Host North Carolina A&T next Friday night.

Charlotte: Host Gardner-Webb on Sept. 11.