The ‘Hoos (5-1, 2-0 ACC) led 10-0 at the half, but UNC (1-6, 0-4 ACC) scored on its first two drives out of the locker room, on a pair of Michael Carter TD runs, from 1 yard and 47 yards, to take a 14-10 lead.
The Zaccheaus TD pass, with 3:25 to go in the third quarter, put the Cavs back on top, 17-14.
The UNC defense got a big stop early in the fourth quarter after Virginia had a third-and-one at the Carolina 6, forcing a short A.J. Mejia field goal that made it 20-14 with 14:14 left.
UVA got the ball back with 11:32 left after a defensive stop, and ran nearly nine minutes off the clock on a 15-play, 60-yard drive, but Kurt Benkert fumbled after being sacked, and North Carolina recovered at its own 40.
The Heels picked up a pair of first downs, but Chris Peace sacked quarterback Brandon Harris on fourth-and-nine with 1:07 to go to end it.
The Cavs dominated the game statistically, outgaining UNC 405-257, and limiting Harris to 46 yards passing, and intercepting him three times.
Benkert was 19-for-31 passing for 249 yards and two touchdowns. Tailback Jordan Ellis had 136 yards on 27 carries for UVA, which had the ball for nearly 40 minutes.