The Vikings outlasted the Texans for a 31-23 victory Sunday, picking up their first victory of 2020.
Dalvin Cook rushed 27 times for 130 yards and two scores, reaching the end zone in the first and second quarters to help Minnesota (1-3) build a 17-6 halftime lead.
Kirk Cousins completed 16 of 22 passes for 260 yard and threw a 9-yard touchdown pass to Adam Thielen in the third quarter, and Alexander Mattison added a 4-yard run that put the Vikings up 31-16 with 10:50 to go.
Houston rallied with a 77-yard touchdown drive to make it 31-23 with 5:52 left and drove to the Minnesota 1 with just 1:26 remaining.
The Texans (0-4) were unable to punch the ball into the end zone, however.
David Johnson was stuffed by Anthony Harris on second-and-goal from the 1, and the running back fumbled a pitch on the following play. George Iloka, who replaced Harrison Smith after a disqualification of the Vikings starting safety in the second quarter, tackled Johnson for a 4-yard loss.
Deshaun Watson threw a 5-yard pass to Will Fuller V on fourth down, but the play that was initially ruled a catch was reviewed and overturned.
The Vikings totaled 162 rushing yards on the day, compared to 96 for the Texans.
Minnesota possessed the ball for 36:31, winning that stat for the first time this season.
Thielen led the Vikings with 114 yards and eight receptions, and Justin Jefferson added 103 yards on four catches. Jefferson became the first Vikings rookie to post back-to-back games with 100-plus receiving yards since Stefon Diggs in October 2015.
Q1, 5:05 remaining
Vikings 7, Texans 0
Dalvin Cook rushes for five yards (Dan Bailey kicks PAT) [7 plays, 56 yards, 4:07 time of possession]
Heavy dose of "The Chef": After opening the drive with a 29-yard pass from Kirk Cousins to Justin Jefferson, the Vikings turned to Cook on five of the next six plays. He rushed four times for 14 yards and turned a quick pass into an 11-yard gain.
Q2, 12:45 remaining
Vikings 10, Texans 0
Bailey kicks a 31-yard field goal [7 plays, 22 yards, 3:22 time of possession]
Short field: The Vikings were able to get three points after taking over at the Houston 35-yard line thanks to a fumble forced by Mike Boone and recovered by Dan Chisena on a punt return by DeAndre Carter.
Q2, 8:50 remaining
Vikings 10, Texans 3
Ka'imi Fairbairn kicks a 50-yard field goal [10 plays, 43 yards, 3:51 time of possession]
Denied: Eric Kendricks halted the Texans possession with an impressive diving pass breakup on a throw from Deshaun Watson to Brandin Cooks on third-and-9.
Q2, 1:53 remaining
Vikings 17, Texans 3
Cook rushes for seven yards (Bailey kicks PAT) [12 plays, 75 yards, 6:53 time of possession]
Conversions: The Vikings picked up a fourth-and-2 with a designed run by Cousins on the left perimeter (Riley Reiff delivered a nice block) and a third-and-1 with a short run by fullback C.J. Ham.
Q2, 0:27 remaining
Vikings 17, Texans 6
Fairbairn kicks a 28-yard field goal [8 plays, 58 yards, 1:26 time of possession]
Red zone stop: The Vikings were able to force the short field goal by halting the Texans on three consecutive plays from the Minnesota 10. Yannick Ngakoue sacked Watson on first down, and two incompletions followed. The rally occurred after Harrison Smith was ejected for lowering the helmet to initiate contact after a 26-yard reception by Jordan Akins.
Q3, 9:47 remaining
Vikings 17, Texans 13
Will Fuller V catches a 24-yard pass from Watson (Fairbairn kicks PAT) [7 plays, 73 yards, 3:02 time of possession]
Quick tempo: The Texans sped up their offense and found chunk plays of 13 to start the drive, 15 on a speed option run by David Johnson and the touchdown strike.
Q3, 5:33 remaining
Vikings 17, Texans 16
Fairbairn kicks a 25-yard field goal [6 plays, 48 yards, 1:51 time of possession]
Another stop: The Vikings rallied after a 43-yard completion to Fuller that moved the ball to the Minnesota 8-yard line by forcing incompletions on first and third down and limiting Johnson to a 1-yard gain on second down.
Q3, 0:41 remaining
Vikings 24, Texans 16
Adam Thielen catches a 9-yard pass from Cousins (Bailey kicks PAT) [8 plays, 75 yards, 4:49 time of possession]
Back from the sack: Cousins responded after taking a sack to create a third-and-10 with consecutive completions of 23 yards to Jefferson and 19 yards to Kyle Rudolph, the latter of which was a fadeaway throw to move the ball to the Houston 20.
Q4, 10:50 remaining
Vikings 31, Texans 16
Alexander Mattison rushes for four yards (Bailey kicks PAT) [6 plays, 73 yards, 3:20 time of possession]
Explosive plays: The Vikings converted a third-and-6 with a 25-yard pass to Jefferson and followed with a 25-yard gain on a pass to Thielen and 15-yard scurry by Cook to set up Mattison's second career score.
Q4, 5:52 remaining
Vikings 31, Texans 23
Kenny Stills catches a 24-yard pass from Watson (Fairbairn kicks PAT) [9 plays, 77 yards, 4:58 time of possession]
Unlikely pickup: The Texans turned a third-and-23 into a touchdown in two plays, getting a 13-yard completion to Johnson a play before Stills found an opening in the end zone.