Sorry, Denver.

Apparently, the Vikings’ run defense is in good hands while giant run-stopping nose tackle Linval Joseph recovers from last week’s knee surgery.

Just ask Ezekiel Elliott and the best run-blocking offensive line in football.

In Sunday night’s 28-24 home loss to the Vikings, Dallas’ two-time rushing champion and 2016 All-Pro first-teamer ran the ball 20 times with not a single first down, no run longer than 6 yards and a 2.35 average per carry that marked a career low in 33 regular-season games with at least 20 carries.

Elliott’s 19th and 20th runs were particularly frustrating for Cowboys Nation. After passing their way to the Vikings’ 11-yard line with a four-point deficit and less than two minutes to go, the Cowboys ran Elliott for no gain on second-and-2, then a 3-yard loss on third-and-2.

Inside nickel rusher Ifeadi Odenigbo shot between center Travis Frederick and left guard Connor Williams to make the tackle for loss. Defensive end Everson Griffen set the edge so well that Elliott cut back right into Odenigbo’s waiting arms.

With Elliott still on the ground, Frederick turned toward the Cowboys sideline and screamed his frustration.

“After the play, [Frederick] was like, ‘What are we doing here!? Why are you running this!?’ ” Odenigbo said with a laugh. “And I’m just celebrating. And saying, ‘Ha, ha.’ And he’s just yelling, ‘Why are we doing this!?’ Ah man, it was just a great feeling.”

As was the entire night for the Purple run-stoppers. Must have been a heck of a game plan, eh, Mike Zimmer, Vikings coach and whiz-bang defensive strategist?

“It wasn’t anything fancy,” he said.

Looking back at Elliott’s 20 carries, Zim’s got a point.

Nothing fancy, schematically. Just a lot of hustle by a swarming set of front-seven players stepping up for their fallen nose tackle.

The Vikings had eight defenders in the box for only two of Elliott’s carries and none after his third carry. They had seven defenders in the box eight times and only six in the box 10 times.

Twelve defenders were credited with at least half a tackle on Elliott’s 20 running plays. Only twice was a player outside the front seven involved in the stop. Safety Harrison Smith and cornerback Xavier Rhodes each had half a tackle on an Elliott run.

“I think our front seven did an amazing job,” Zimmer said. “They all played really well, honestly.”

Middle linebacker Eric Kendricks led the way on Elliott runs with five total tackles, including one solo. Outside linebacker Anthony Barr had 3½, three of them solo and one for loss.

Jaleel Johnson, Joseph’s replacement Sunday night and again this Sunday against the Broncos, had two solo tackles on Elliott runs. So did his backup, third-string nose tackle Armon Watts, and defensive tackle Shamar Stephen. Ends Griffen and Stephen Weatherly had 2 and 1½ tackles on Elliott runs, respectively.

The tackle stats only tell part of the story in how the Vikings bottled up the highest-paid running back in NFL history. On 19 of Elliott’s runs, there were two and oftentimes three or more defenders converging on Elliott or redirecting him into a teammate’s grasp. The only time that wasn’t the case, Griffen was able to react to a cutback move, peel off his block and make the stop after a 4-yard gain.

Barr had a tackle for loss on an Elliott run, when he came unblocked from the backside.

“We got similar looks in the Packers game but were hesitant,” Barr said. “Against the Cowboys, we were like, ‘We get that look, we’re going to shoot our gaps and make a play.’ ”

There also was some old-fashioned strength involved. On Elliott’s 14th carry, Stephen got leverage on three-time first-team All-Pro right guard Zack Martin. In textbook fashion, he stood up the best guard in football, shed him and tackled Elliott for a 1-yard gain.

As for those final two red-zone runs, Barr said he and Kendricks both read run pre-snap and alerted the front line.

“The Cowboys show tips,” Barr said. “They’re real heavy in their stances, how they set. Usually, Eric and I have a good feel for that as the game goes on. Whether the linemen are setting heavy or light. Little things like that.”

Sorry, Denver. You’re coming to U.S. Bank Stadium with three wins and a passing game that ranks 28th in yards and 29th in pass protection.

Apparently, even without Joseph, the Vikings should have an answer for your 16th-ranked running game.