"We got into a rhythm and started making some plays," West Virginia coach Bill Stewart said.
The loss, Louisville's ninth straight Big East setback, dropped the Cardinals to 3-6 on the season - 0-4 in the Big East.
Neither team could muster much offense in the first half as the Mountaineers led just 7-6 at halftime. Louisville opened the scoring on a 37-yard field goal from Chris Philpott with 4:16 left in the second quarter.
West Virginia took a 14-6 lead on Tavon Austin's 9-yard touchdown run early in the third quarter. Tyler Bitancurt added a 42 yard field goal late in the quarter to give the Mountaineers a 17-6 lead.
Philpott's third field goal (29 yard) of the contest cut West Virginia's lead to 17-9 with 10:22 remaining but Louisville couldn't get closer.
Darius Ashley led Louisville with 166 rushing yards on 32 carries, both career-high's for the redshirt freshman from Cincinnati.
Making his second consecutive start, Will Stein completed 14 of 26 throws for 99 yards. Stein was sacked five times by the Mountaineers, including twice on the Cardinals' final possession. Louisville had 301 yards total offense, including 201 rushing yards.
Louisville's defense was solid, forcing two turnovers while limiting West Virginia to only 273 total yards. The Cardinals limited Noel Devine to 56 yards on 13 carries.
Louisville returns to PJCS to play Syracuse next weekend.