The Hokies (6-1, 3-0 Atlantic Coast Conference) won their sixth straight game and ended a four-game losing streak against the Panthers, avenging a 35-17 loss a year ago that sent Virginia Tech into a long skid.
This time, they proved just as inhospitable hosts to the ACC newcomer Panthers (3-2, 2-2).
Savage's sacks totaled minus-49 yards, and he has now been sacked 15 times in his past two appearances.
The Hokies were sharp at the outset, driving 71 yards in eight plays the first time they had the ball. They didn't get to third down a third-and-9, when Thomas hit freshman tight end Kalvin Cline for a 27-yard touchdown. It was the first touchdown reception of Cline's career.
After a three-and-out for Pittsburgh, which ended with a sack when the lumbering Savage kept the ball on third-and-1 and tried to run around the right side, the Hokies drove again.
Journell's career-best 48-yard field goal made it 10-0, and even though the Hokies offense stalled pretty much the rest of the way, gaining just 211 yards in the last three quarters, it hardly mattered because the defense was allowing almost nothing.
Journell added field goals of 37, 42 and 23 yards, and missed on a 33-yarder.
The Panthers first points came on a 51-yard drive late in the first half, the key play a 48-yard pass from a pressured Savage to Street, who beat safety Kyshoen Jarrett down the Panthers sideline.
Savage, a pro-style quarterback who was only cleared to play this week after sustaining a concussion against Virginia, got more of the same treatment from a defense that started the game leading the country with 13 interceptions, sharing the national lead with 19 sacks and ranked fourth overall, allowing just 264 yards per game.
Dadi Nicholas had three sacks for the Hokies, and Derrick Hopkins had two.
Savage did get some measure of payback with two 2:01 remaining, escaping the arms of one tackler and running 9 yards for a touchdown. On the two-point conversion try, however, he was swarmed and fumbled the ball away.