Mason Plumlee had 18 points and 11 rebounds, Quinn Cook scored 18 points and Rasheed Sulaimon finished with 13 for the Blue Devils (22-2, 9-2 Atlantic Coast Conference).
They shot 44 percent - 52 percent after halftime - and used a big run in the second half to erase a slow start.
P.J. Hairston matched a career high with 23 points and Reggie Bullock had 15 points with four 3-pointers for North Carolina (16-8, 6-5), which led for the first 26 minutes but went on to lose its second straight.
The Tar Heels were 13 of 23 from the free-throw line and missed 7 of 10 during a critical late stretch while falling to 1-4 this season against ranked opponents.
Still, they trailed just 65-61 in the final minute and appeared to have gotten a stop by forcing Tyler Thornton to miss a long 3-pointer with the shot clock winding down. But Bullock fouled Sulaimon on the rebound, and the freshman hit both free throws with 37.5 seconds left.
Hairston hit a free throw on North Carolina's next possession to cut it to 67-62, but Plumlee countered with two free throws with 30.3 seconds left to make it a three-possession game.
Seth Curry scored 11 points in his sixth straight double-figure performance against North Carolina while Thornton - who had nine points in his previous three games combined - finished this one with nine points and hit three of Duke's six 3-pointers, each of them important.
Plumlee picked up his third foul 31 seconds into the second half and uncorked an untimely 20-foot jumper a few minutes later, prompting Mike Krzyzewski to burn a timeout. He went to a smaller lineup, sitting Plumlee in favor of two power forwards, Amile Jefferson and Josh Hairston.
The move freed up some space for the Duke guards and immediately led to six quick points to start the 19-7 run that put the Blue Devils ahead to stay.
Duke outscored North Carolina 11-3 during the 4-minute stretch with Plumlee on the bench and took their first lead when Curry swished a 3 from in front of the bench to make it 42-41 with 14 minutes left.
Thornton - who had missed 12 of 14 3-pointers during his previous eight games - hit two of them from the same spot in the right corner, capping the spurt with his second that made it 50-45 with 12½ minutes to go.
Curry eventually stretched the lead to 59-51 with another 3 with 5 minutes left.
Dexter Strickland added 14 points but James Michael McAdoo was held to nine on 4-of-12 shooting for North Carolina, which came in as a written-off, double-digit underdog after a 26-point loss at No. 3 Miami that marked its worst loss of the season.
But the Tar Heels were aggressive early and methodically built a double-figure lead, the third straight year they came into Cameron and went up by 10. Bullock's third 3 of the half with about 6:45 left put North Carolina up 28-18.
Meanwhile, Duke got off to a rather un-Duke-like start.
The Blue Devils had 11 turnovers - Cook and Plumlee had four apiece - and just three assists during the opening 20 minutes and were just 1 of 4 from 3-point range.
Curry, who entered averaging 16 points in North Carolina games, was 1 of 6 for two points in the half while being guarded by Bullock, who at 6-foot-7 had a 5-inch advantage.