Hood finished with 101 yards rushing and two 3-yard scoring runs, T.J. Logan added a 16-yard TD and Nick Weiler kicked two field goals for the Tar Heels (6-1, 3-0 Atlantic Coast Conference).
They broke a 13-all halftime tie by scoring on their first three possessions of the second half, and pitched their second straight second-half shutout.
Taquan Mizzell rushed for 117 yards and Matt Johns was 17 of 30 for 148 yards with a 1-yard touchdown pass to Charlie Hopkins for the Cavaliers (2-5, 1-1).
Johns had one fumble and four interceptions in the second half, and was picked off in the end zone on a fourth-and-goal with under 6 minutes left.
Malik Simmons intercepted Johns on Virginia's next series, Weiler kicked a 37-yard field goal with 9:07 left and Shakeel Rashad then picked off Johns in the end zone with 5:50 to play.
Weiler gave the Tar Heels a 16-13 lead with a 29-yarder on their first possession of the half. That came after Virginia tied it at 13 at halftime, turning two North Carolina turnovers into field goals by Ian Frye.
Their first four losses were to teams that either are or have been ranked in the Top 25 -- and the Tar Heels, the nation's only unranked one-loss team from a power conference, hope to join that group when the new poll is released Sunday.
Marquise Williams was 21 of 26 for 226 yards for the Tar Heels, who overcame two turnovers and a season-worst 13 penalties for 135 yards and set up a game with huge Coastal Division implications Thursday night when they visit No. 25 Pittsburgh.
This was North Carolina's lowest-scoring win of the season. The Tar Heels -- who have the ACC's most productive offense, averaging 482 total yards and 40.5 points -- had scored at least 38 points in each of their victories.
Not that anybody's complaining -- not with the vastly improved defense playing like this. Coordinator Gene Chizik's group has held every opponent except Georgia Tech (31) to either 13 or 14 points.
Hood capped North Carolina's longest drive of the season -- by yardage, distance and time elapsed -- with the touchdown that finally gave the Tar Heels some breathing room.
On the first play of the fourth quarter, he plowed up the middle and fell as he extended his arm toward the goal line, and when the ball popped out, Virginia's Zach Bradshaw scooped it up in the end zone. The officials discussed the play and called it a touchdown, and the decision stood after a review.