Peterson rushed for 86 yards, falling far short of the 2,000-yard mark, yet helped the Vikings' postseason chances with a 23-6 upset of the Texans on Sunday. Christian Ponder threw a touchdown pass, Toby Gerhart added a score and Blair Walsh kicked three field goals as the Vikings (9-6) won their third straight.
The win raises the stakes for the Vikings, who host Green Bay next Sunday in the regular-season finale.
"We obviously have a big one next week, and if we don't win that one, this one doesn't mean anything," Ponder said. "Our No. 1 goal is to make the playoffs."
The loss kept the Texans (12-3) from clinching home-field advantage throughout the AFC playoffs. They could still secure a first-round bye if Denver loses later Sunday, and would claim home-field advantage with a win next week at Indianapolis.
"Very disappointing because we had a chance to line up here and get something done today," coach Gary Kubiak said. "That doesn't mean we still can't get it done. That's the most important thing."
Peterson had his lowest rushing total since getting 79 yards on Oct. 14 in a loss at Washington, breaking a streak of eight 100-yard games. Peterson, who is from Palestine, Texas, had more than 100 family and friends at the game.
"We knew they were going to focus on the run, which is OK," Peterson said of the Texans. "It felt good to see other guys get involved and us continue to move the ball down and score some points."
He has 1,898 this season and needs 208 yards to break the NFL single-season rushing record held by Eric Dickerson. Minnesota coach Leslie Frazier said he took Peterson out late as a precaution because he has a sore abdomen.
"I'll get some rest and be ready to get a W and break that record," Peterson said.
The Vikings took a 10-3 lead when Walsh kicked a 56-yard field goal. The kick gave Walsh, a rookie, the NFL record with nine field goals of 50 yards or longer this season.
The Texans failed to score a touchdown for the first time since 2006.
"We didn't play well," Kubiak said. "I think we battled defensively, but offensively we probably played as bad as we've played. I take full responsibility for that. It's a huge, huge disappointment. We've got to get over it really quick."
J.J. Watt had a sack to leave him with 20 1/2 this season.
Houston got within 10 points before Gerhart's 3-yard run extended the lead to 23-6 with about five minutes left in the fourth quarter. That drive was helped by a 29-yard run by Ponder.
Ponder, who got married on Monday, was 16 of 30 for 174 yards to help the Vikings pile up 345 yards. He finished with seven rushes for 48 yards -- 14 more yards rushing than the Texans had.
"Christian had a terrific day throughout, playing with a lot of poise, a lot of control -- he did all the things we needed," Frazier said. "But it was all set up by our run game."
Arian Foster had 10 rushes for 15 yards before leaving with about nine minutes left in the third quarter with an irregular heartbeat. Kubiak said he is OK, but he was taken out as a precaution.
"I'll be fine," he said. "I'll be OK. It's a very minor situation."
Ben Tate took over and didn't fare much better with four carries for 17 yards.
The Texans were foiled by their inability to convert third downs, going 1 of 11. Quarterback Matt Schaub went 18 of 32 for 178 yards.
Houston got to the Minnesota 1 with a 12-yard reception by Kevin Walter late in the third quarter. Then came an incomplete pass followed by a run for no gain by Tate. Schaub was sacked by Fred Evans for a loss of 14 yards to make the Texans settle for a 33-yard field to cut the lead to 16-6.
Houston had to punt on its first possession of the third quarter, but got the ball right back when Watt sacked Ponder and forced a fumble. Bradie James recovered, but the Texans had to punt again.
The Vikings extended their lead to 16-3 when Walsh made a 39-yard field goal on the first drive of the second half. That series was helped when Ponder found Jarius Wright on a 15-yard reception, and the Vikings got 15 more yards when Whitney Mercilus was flagged for unnecessary roughness on Ponder.
Houston was on the Minnesota 28 early in the second quarter when Jasper Brinkley forced Foster's fumble, which was recovered by A.J. Jefferson.
A 41-yard field goal by Walsh left Minnesota up 13-3 at halftime.
Peterson ran for 20 yards to get Minnesota's offense going. The Vikings took a 7-3 lead when Kyle Rudolph grabbed a 3-yard touchdown reception. Rudolph also had a 27-yard catch that drive.
Houston's Andre Johnson had seven receptions for 97 yards.
NOTES: The Texans wore decals with the initials S.H.E.S. as a tribute to the school shooting victims at Sandy Hook. ... Playing in his 137th game, Johnson got his 800th career reception on his first catch, making him the second-fastest player to reach the milestone. Marvin Harrison did it in his 131st game. ... Johnson has 100 catches this season, making him the fifth player in NFL history to have at least 100 catches in four or more seasons.