HOUSTON – The Vikings' week began under orders to evacuate their practice facility, after word came from the NFL they might have been exposed to COVID-19 from an opponent that had likely used infected players.

The Vikings shuttered their opulent headquarters for two days, shifted game-planning sessions to home offices and reconfigured a practice schedule that traded an integral day of on-field work for a slate of virtual meetings. They took and passed a week's worth of point-of-care tests, nervously waiting at NRG Stadium for a final set of results on Sunday morning after the rapid tests returned one false positive for a starter and three inconclusive results shortly before the deadline to declare inactive players.

They built an 11-point lead against the Texans, fumed as their five-time Pro Bowl safety was ejected for a hit they felt should only have incurred a penalty and scrambled to hold their secondary together against quarterback Deshaun Watson's attempts to test its limits. And then, one more time, the Vikings waited, as an official review determined that Will Fuller's leaping one-handed attempt would not count for a touchdown and Watson would not have a chance to tie the game with a two-point conversion.

Only then was the 31-23 victory assured.

The Vikings haven't needed four games to produce their first win of the season since 2013 — when they had to go to London to get it — and in some ways, they shouldn't have needed to work as hard as they did to secure it.

But as players spilled onto the field to celebrate, before referee Brad Rogers made it official that Fuller hadn't completed the catch, the imperfections of their victory didn't matter much. All that really did was the fact a taxing week would end with a coda of relief.

"It's great, to see all of the emotions in the locker room, to see all of the smiling faces in the locker room," said receiver Justin Jefferson, who had been a part of as many losses in three weeks as he had in two seasons as a starter at LSU. "First three weeks, everybody was droopy and we were coming out of the locker room with an 'L,' so to finally come out with the 'W' and to see everybody's excitement, it's great. I'm trying to get many more."

The first-round pick formed a triumvirate with Adam Thielen and Dalvin Cook that accounted for all but 51 of the Vikings' 410 yards from scrimmage. Cook ran for 130 yards and two touchdowns, pressing the edges of the Texans defense the way he did on a 181-yard day against the Titans and scoring his second touchdown on a highlight-worthy showcase of his balance, footwork and sheer tenacity.

Boxscore: Vikings 31, Houston 23

Cook broke three tackles near the line of scrimmage — at one point putting his hand on the ground to steady himself — before shifting the ball to his left hand and using his right to stiff-arm Vernon Hargraeves on his way into the end zone.

"It's called the striking zone: We're in the striking zone," Cook said. "It's been costly down there for us not finishing drives. We harped on that all week, Coach Zimmer did: finishing drives. When you get in the red zone, score a touchdown. It's about me beating my guy and helping my team win a football game. At this point, we're scratching and clawing to try to win a football game."

Jefferson became the sixth Vikings rookie to post back-to-back 100-yard receiving games, joining Stefon Diggs, Randy Moss, Hassan Jones, Anthony Carter and Paul Flatley. He caught four passes for 103 yards — all on plays that gained at least 20 — while Thielen caught eight of 10 targets for 114 yards. Cook and tight end Kyle Rudolph were the only other Vikings players to catch a pass.

Cousins completed 16 of 22 passes for 260 yards, drilling Thielen in the back of the end zone for a 9-yard touchdown in the third quarter after big throws to Jefferson and Rudolph helped him shake off a sack.

"It's just great to see players making plays and making things happen," Cousins said. "Proud of how we came down here after the week threw us a curveball and got a win on the road and was able to put it all together as a team."

While the Vikings could turn to Thielen, Cook and Jefferson in the moments when they needed to make a play, the Texans had no such safe haven.

David Johnson, the running back for whom Houston coach Bill O'Brien traded star receiver DeAndre Hopkins this offseason, gained only 60 yards behind a leaky Texans offensive line against a Vikings run front that had been punished in the season's first three weeks. Watson missed receivers, passed on an opportunity to run for a first down and failed to lead the Texans to touchdowns in the red zone.

After falling behind 17-6 at halftime, the Texans made things close in the second half with the help of a call against Vikings safety Harrison Smith that had Zimmer screaming at an official before halftime.

Smith was ejected for lowering his helmet to initiate contact with the helmet of Texans tight end Jordan Akins on a 22-yard reception late in the first half. The safety arrived at the same time Akins went low to make the catch, but the hit put Akins in the concussion protocol and led to Smith's second career ejection, along with a personal foul.

"I love Harrison Smith; like he's my son, first of all," Zimmer said. "My issue has always been, the quarterback's gonna throw the ball in the middle of the field and there's no repercussions whatsoever, and Harrison is not a dirty player. He's never been a dirty player, and I feel like he tried to get his shoulder in there. They told me that the league office ejected him. If they want to give us a penalty, fine; give us a penalty, but don't eject guys."

With Smith out, Watson went to work with an up-tempo offense intent on stressing a Vikings secondary with two rookie corners and George Iloka taking Smith's place at safety.

He hit Will Fuller for a 24-yard touchdown in the third quarter, and came back with a 43-yard strike to Fuller against rookie Jeff Gladney to set up a field goal, after the Vikings' Dan Bailey missed a 55-yard attempt wide right.

Then, after the Vikings had built a 31-16 lead, Watson found Kenny Stills for an easy 24-yard score after Iloka bit on an underneath route.

The Vikings got the ball back with 5:52 to go and opened their drive with a clever Cousins bootleg to Thielen for 7 yards but could only run 2:59 off the clock. That gave Watson one more chance to work on the young Vikings secondary. After holding the Texans to field goals in their first two red-zone trips of the game, though, the Vikings finished it with a stop.

Johnson nearly fumbled away Watson's option pitch, and a fourth-down throw to Fuller, against Holton Hill in coverage after the Vikings brought pressure, resulted in an incomplete pass when officials ruled Fuller hadn't completed his one-handed catch attempt as he went to the ground. It overturned the on-field touchdown ruling, and allowed the Vikings to kneel out the clock deep in their own territory.

"We spend a lot of time inside the 12-yard line. We've been decent at it for the most part. I think our guys understand how to play in that area," Zimmer said. "You have to know how to play down there. There's two areas there. You have to defend the down-and-distance plus you have to defend the goal line. We try to teach our guys that all the time."

Sunday was too soon to declare any kind of resurgence for the 1-3 Vikings, who travel next to Seattle for a Sunday night matchup with the undefeated Seahawks. A loss in Houston, though, would have extinguished any playoff chances ahead of perhaps the Vikings' toughest road game of the season.

Instead, they could fly home happy after a week, and a game, that had tested their patience.

"It wasn't perfect in the end," Cook said, "but we brought it back. That's all it's about in the NFL."