North Carolina guard Marcus Paige played only 17 minutes, jamming his right ankle in the first half.
Justin Jackson and Isaiah Hicks added 12 points each for the Tar Heels (10-2).
Joel Berry II had 11 points and a career-high 11 assists as North Carolina scored at least 80 points for the eighth consecutive game.
The Tar Heels pulled away early with a 15-2 run in which they scored on seven of eight possessions. Johnson made two layups and two dunks in a span of 68 seconds as North Carolina seized control.
Freshman Ronshad Shabazz scored 18 of his season-high 21 points in the first half to lead the Mountaineers (2-9).
Frank Eaves had 13 points and Michael Obacha added 12 for Appalachian State.
With Paige hobbled, North Carolina pounded the ball inside against the outmanned Mountaineers.
Appalachian State has no player taller than 6-foot-8 and was powerless to defend the 6-10 Johnson around the rim.
Johnson, who established a career high for scoring in North Carolina's previous two games, scored at least 22 points for the third straight game.
He had a putback and a dunk on consecutive possessions during the Tar Heels' 11-3 run to open the second half.
Paige walked into the tunnel to the locker room with 17:45 remaining in the game after converting a transition layup and did not return to the bench. A team spokesman said that Paige's ankle stiffened at halftime.
Paige appeared to hurt the ankle while blocking a shot near the sideline midway through the first half. He stayed in for the ensuing possession, picking up a foul on Tyrell Johnson's driving layup.
Paige headed back to the locker room with 9 minutes left in the half and returned to the bench at the 8:11 mark. He had a discussion with coach Roy Williams before re-entering the game.
Paige missed the first six games of this season because of a broken bone in his right hand.
North Carolina: Johnson made his first five shots of the game, tying Brad Daugherty's school record of 16 consecutive made field goal attempts. Johnson's streak came to an end when he missed a long jumper from the left wing just over 4 minutes into the game.
North Carolina hosts UNC Greensboro on Dec. 28.