The Blue Devils end the season with a 3-9 overall record (1-7 ACC), while North Carolina improved to 7-5 (4-4 ACC) on the year.
Duke was led on offense by quarterback Renfree, who completed 24-of-39 passes for 242 yards and a touchdown. Wide receivers Donovan Varner and Kelly each had 67 yards receiving, combining for 11 receptions, while Conner Vernon ended the day with 55 yards on five catches.
On defense, the Blue Devils were led by senior linebacker Abraham Kromah with 20 tackles. Safety Matt Daniels (13), safety Walt Canty (11) and Charlie Hatcher (10) all recorded double-digit tackles, while linebacker Damian Thornton also chipped in nine tackles and a sack.
North Carolina's offense posted 519 yards for the game, paced by quarterback T.J. Yates with 264 yards and a touchdown, while tailback Anthony Elzy posted a career high 116 yards rushing on 23 carries.
On North Carolina's first possession, the Blue Devils stopped the Tar Heels on fourth-and-one and took over at the UNC 45. Four plays later, the Blue Devils faced fourth-and-6 from the Tar Heel 31, however Renfree would hit Varner for a 22-yard gain to set up first-and-goal at the UNC nine. The Blue Devils would capitalize on the following play as Renfree connected with Kelly for the nine-yard touchdown strike to cap the six-play drive.
North Carolina's next possession resulted in a 10-play touchdown drive finished off by a five-yard rush by Elzy to tie the score at seven-all with 59 seconds remaining in the opening quarter. A Tar Heel false start infraction had moved North Carolina back to its own three following the kickoff, but Yates connected with H-back Ryan Taylor for a 40-yard gain on third-and-eight to move the Tar Heels out of their own territory.
Following a Duke punt, North Carolina again faced a long field starting at its own four-yard line. Yet the Tar Heels were again able to sustain the drive, marching 87 yards down the field in 8:16 to take the 10-7 lead on a 25-yard field goal by kicker Casey Barth. UNC would head into the halftime with the three-point margin.
The Tar Heels extended their advantage to 10 points on their first possession of the third quarter, covering 80 yards in 12 plays. Wide receiver Joshua Adams caught a five-yard touchdown pass from Yates to complete the drive.
North Carolina would miss a 41-yard field goal attempt to give the Blue Devils the ball on their own 24 midway through the third period. A 39-yard pass from Renfree to Varner set up first-and-goal for Duke, but the Blue Devils had to settle for a 21-yard field goal from kicker Will Snyderwine to cut UNC's margin to 17-10 with 2:27 left in the third quarter.
The Blue Devils caught North Carolina off guard, recovering the onside kick, but an offsides call would force Duke to re-kick, giving the Tar Heels the ball. UNC did not waste the opportunity, putting together a 12-play, 81-yard march to go up 24-10 with 11:38 left to play.
The two teams traded punts before North Carolina picked off a Duke pass at the UNC two-yard line. On the next play, Duke Hatcher tackled UNC's Shaun Draughn in the end zone to record the safety, cutting UNC's lead to 24-12.
Starting at the North Carolina 45, Duke needed six plays to reach the end zone as freshman quarterback Brandon Connette ran in from two yards out for the score. But the Blue Devils could not cut any further into the Tar Heels' 24-19 lead.