The North Carolina football team looked headed for disaster. But then running back Jaylen McGill broke free to the left side.
Read more Photos: UNC battles rival Duke in college football action
After allowing 20 points unanswered to Duke with two fumbles and a massive turnover on downs, the Tar Heels got the one score they needed after six scoreless drives in a row as McGill’s touchdown run with 1 minutes, 53 seconds to play provided the difference in a 24-20 win, UNC’s first in the Victory Bell rivalry since 2023.
McGill’s 24-yard run broke the long stalemate for North Carolina to complete an eight-play, 78-yard drive and led to a signature win for the Tar Heels for the second-straight week. For Duke (4-2, 1-2 ACC), it was another rough loss, falling to its rival after a 28-25 ACC loss at Georgia Tech last weekend.
UNC (4-2, 2-1 ACC) overcame the slew of turnovers in addition to 175 yards of offense from Blue Devils running back Nate Sheppard, the Tar Heels rushing to the end zone toward the Victory Bell after a game-winning interception allowed it to enter victory formation.
“Duke-Carolina. I said it would come down to the last play of the game,” Duke coach Manny Diaz said after his first loss to UNC. “Unfortunately, this is the year it didn’t go our way.
“It was your typical, classic college rivalry game. It just ended badly for us.”
The close finish was the result of a lot of bad for the Tar Heels, though. Before it got interesting, the Tar Heels looked poised for a rout early in the game. An opening drive field goal was followed by a three-and-out for Duke, which was vulnerable to disaster plays on special teams in the first quarter.
On the first punt attempt that went wrong, Blue Devils punter Kade Reynoldson dropped a high snap, picked it back up and tried to kick it away — but not before UNC freshman linebacker Calvin Thomas blocked it. It was recovered by freshman defensive back Jaziel Hart at the Duke 11, and Tar Heels quarterback Billy Edwards Jr. turned it into a five-yard touchdown pass to wide receiver Jordan Shipp three plays later to give North Carolina a 10-0 lead with 7:21 left in the first quarter.
The second punt attempt didn’t go nearly as bad, but after another three-and-out by the Blue Devils, Reynoldson looked to run up the field on fourth-and-two, hoping to catch UNC sleeping with a fake. He didn’t, so Reynoldson narrowly punted the ball away. The Tar Heels turned the continued momentum into a 14-play, 63-yard drive to go up 17-0 just 1 minute, 17 seconds into the second quarter.
Duke’s offense didn’t do much of anything the entire first half. It totaled 152 yards after 140 yards in the second quarter, but 73 of those yards came on its third drive. That drive ended with nothing, though. UNC forced a turnover on downs at its own two-yard line, which seemed just another moment in a dominant first half for the Tar Heels. But as Jordan Shipp tried to fight for a first down on the ensuing drive, the ball popped free.
“Our defense was playing lights out,” Shipp said, “and I gave them seven free points.”
Duke’s Andrew Pellicciotta returned the fumble forced by Kyon Loud to the end zone, as Shipp raised his hand on the sideline as if to say “my bad.”
Duke went to halftime down just 17-7 after some more offensive stalemate over the 8:37 that followed. Even after two-straight pass breakups prevented the Blue Devils from getting into the end zone from the five-yard line, Duke kicked a field goal to cap a 19-play, 63-yard drive after the break, pulling within one score, 17-10, with 6:54 left in the third quarter.
North Carolina just couldn’t pull away. It got on the doorstep again, but running back Jaylen McGill fumbled the ball inside the 10-yard line with 3:40 left in the third quarter. The Blue Devils kept points off the board, and two drives later, added a field goal to make it 17-13 with 8:47 left in the game. After a rough start for Duke, it was UNC that seemed most susceptible to disaster for a large majority of game, and disaster finally came when the Tar Heels decided to trot out a different punter midway through the fourth quarter.
Freshman punter Adam McCann-Gibbs dropped a snap with 7:43 and was tackled for a turnover on downs. Duke scored its 20th unanswered point to take its first lead of the game, 20-17, with 4:39 left in the game on a seven-yard pass from Duke quarterback Walker Eget to Sheppard.
“Had a couple great drives early, and had a good one in the third quarter, good one in the fourth quarter,” UNC coach Bill Belichick said. “Unfortunately, we turned the ball over three times on fumbles.”
But UNC remained poised: It has been in this situation, having to overcome turnovers, the last three weeks. And it got experience winning a game like it last weekend. So riding the arm of its quarterback, it, finally, got another explosive play as McGill broke free. So it was then Duke who had to respond, and the near-downfall ended with a highlight: a diving freshman Kenton Dopson III bringing an interception into his chest with 14 seconds left, spiking the ball to the ground as UNC closed out its biggest win of the season. Again.
“That’s what we train all offseason for,” UNC linebacker Derek McDonald said. “That’s what we harped on all offseason, and coming into camp: is finishing.”
Read more Tourists ordered to evacuate Outer Banks island or risk being trapped by storm
Here’s what stood out from the game.
Billy Edwards Jr. has struggled with some inconsistency in recent games. But against the Blue Devils, the middle of the field was wide open. Edwards didn’t need to divert his eyes from that area often, as the Tar Heels starting quarterback had maybe his most efficient game of the season, completing 15 of 25 passes for 191 yards and a touchdown.
But for as well as that worked to gain yards up the field on certain drives, it wasn’t enough to produce much offense after the first three drives of the game for the Tar Heels ended in scores. It looked like it wouldn’t be enough, but the Tar Heels put the ball in the hands of Edwards again on the game-deciding drive. He completed two passes for 28 yards, but again put the offense in scoring position. On the second-to-last drive of the game, it did.
“We had plenty of time,” Edwards said about the last drive. “We had all our time outs. I felt like we were moving the ball on them for the most part.”
UNC looked like it got a break. A thunderous play by Jelani Thurman, roaring on the sideline after he shoved off two tackles for a 12-yard catch-and-run for a first down, came with some bonus yardage. A late hit on Thurman after he went out of bounds pushed North Carolina up another 15 yards, threatening a score at the Duke 11-yard line — a chance to take the momentum back leading 17-10 late in the third quarter.
But North Carolina couldn’t hold onto the ball in those situations.
Fighting for extra yardage up the middle, McGill had the ball popped free of him. While Duke didn’t score on the ensuing drive, it likely took points away from North Carolina in another big spot after Shipp lost a fumble in the second quarter that led immediately to Duke’s lone first-half score.
The most damaging turnover was still yet to come, though. The Tar Heels trotted out McCann-Gibbs to flip the field at the end of their ninth drive after starting punter Aeron Burrell’s “back tightened up a bit” earlier in the game, according to Belichick. And McCann-Gibbs dropped the ball. He was tackled for a turnover on downs with 7:43 left, which Duke turned into the go-ahead score with 4:39 left.
“We got to do a better job of taking care of that,” Belichick said.
For Duke, one question was answered quickly: Sheppard would start and would play
Sheppard, who was the FBS leader in rushing yards per game, suffered an injured left ankle against Georgia Tech. He stayed in the game, picking up 99 yards on the ground, but was listed as questionable on the ACC availability reports in the days leading up to Saturday’s game.
Sheppard was upgraded to “game-time decision” in the final availability report on Saturday.
Sheppard did appear to be limited during the game He was spelled in the second quarter by C.J. Campbell and did not have the full explosiveness through gaps he has shown this season, rushing for 77 yards on 20 carries.
Sheppard did show some power. Taking a swing pass from Eget in the second quarter, Sheppard picked up and rumbled through UNC safety Javion Butts to pick up 23 yards.
Eget often went to the checkdown play and Sheppard often was on the receiving end. He caught a game-high 11 balls for 98 yards.
They call sophomore safety Andrew Pellicciotta “Juice” at Duke and he provided some Saturday at just the right moment for the Blue Devils.
UNC was dominating the game in every phase and had a 17-0 lead in the second quarter before one of the “quick change” plays that football coaches either covet or dread.
UNC’s Edwards made a quick sideline throw to Shipp. The hit was made by Duke’s Loud and ball popped loose. Suddenly, Pellicciotta had the ball and bounced into the end zone for a 9-yard score.
The TD play came moments after the Tar Heels had stymied Duke on a fourth-and-1 play at UNC 2, stopping a Campbell run.
Duke’s defense has forced a paucity of turnovers this season but recovered a pair of fumbles Saturday.
Read more NC voters indicted as Trump administration targets noncitizens in fraud cases
This story was originally published October 17, 2026 at 7:20 PM.
