They were up 66-62 with just under 4 minutes to play when Richmond's Terry Allen picked up his fourth foul. Johnson hit a put-back that started the run that gave the Tar Heels control of the game. A Paige 3-pointer made it 71-62 and North Carolina held on down the stretch.
Cedrick Lindsay scored 29 points for Richmond. Kendall Anthony added 13.
North Carolina will play the winner of Saturday's second semifinal between No. 3 Louisville and Fairfield in Sunday's final.
Paige scored 16 of his points in the second half and was 6 of 9 from 3-point range. The rest of the Tar Heels were 0 for 4.
Johnson added 12 rebounds, giving the sophomore his first career double-double.
Richmond jumped out quickly scoring 10 of the games' first 12 points.
The Tar Heels chipped away, tying the game on a Johnson jumper midway through the first half, but they didn't take their first lead until just before intermission.
Johnson's emphatic block, and two-handed dunk at the other end sparked an 8-0 that gave UNC a 38-33 advantage early in the second half. They stretched that lead to seven early in the second half before Richmond (3-2) came back. Lindsay's runner in the lane tied the game at 51, and the teams were tied again at 56 on a 3-pointer by Anthony.
But another 3-pointer by Paige stopped the Spider's momentum.
North Carolina was again playing without two key players. P.J. Hairston, who was the Tar Heels leading scorer a year ago, and senior guard Leslie McDonald didn't travel to the tournament because NCAA eligibility concerns.
Hairston and McDonald haven't played this year for UNC while the school and NCAA review their eligibility.
Authorities twice cited Hairston during the offseason while he drove rental cars linked to a felon. The school hasn't specified McDonald's issue, though it sent a letter ordering a company making designer mouth guards to stop using McDonald on its web site over the summer.
North Carolina dropped from 12th to 24th in the AP Poll after falling 83-80 to Belmont, the first loss by the Tar Heels to an unranked non-conference opponent at home since February, 2002. The Tar Heels missed 26 free throws in that game.
They were 26 of 37 against Richmond. The teams combined for 50 fouls.
Richmond was coming off a 74-63 overtime win against Hofstra. The Spiders beat Belmont 69-61 on Nov. 11 in Richmond.
Carolina has now beaten Richmond in 15 of their 17 meetings. But the two teams hadn't played each other since 1997.