Fans had to be feeling a sense of déjà vu when the Broncos raced out to a 20-0 halftime lead Sunday on the Vikings, who were double-digit favorites and had everything going their way after beating Dallas 28-24 last Sunday night.

It reminded me of the Vikings-Bills game in Week 3 last year, when they faced an unproven quarterback in Josh Allen. Buffalo raced out to a 27-0 halftime lead and a 27-6 victory that shocked Vikings coaches and players.

Sunday looked like a similar story as another Allen — Broncos quarterback Brandon Allen, making only his second career start — raced out to a 20-0 halftime lead.

This time, however, the Vikings didn’t break and rallied for one of the biggest comebacks in team history in a 27-23 victory.

Vikings coach Mike Zimmer expected tough defense from the Broncos, who came into the game ranked fourth in total defense and sixth in scoring defense, giving up only 18.9 points per game. But he didn’t expect Allen’s passing to pick apart his defense. Allen threw for 240 yards, the Broncos outgained the Vikings 394-321 — Denver was averaging 311.4 yards per game coming into this contest, 27th in the NFL — and Zimmer was not pleased.

“Way better, we have to do way better,” he said. “I’m so disappointed in how we’re playing pass defense.”

Tom Baker for Star Tribune
VideoVideo (02:57): Even though they won, Vikings head coach Mike Zimmer says he will use the Denver game as an example in the future that Minnesota can't afford to come out slow in the first half of any football game, no matter who they're playing.

And even though the Vikings were missing several key players — safety Anthony Harris, nose tackle Linval Joseph, wide receiver Adam Thielen and guard Josh Kline, then safety Harrison Smith (hamstring) left during the game — Zimmer said that does not matter.

“No, it’s no excuse though,” Zimmer said. “It is no excuse. We have to play better.”

Still, the Vikings were able to make a miraculous comeback going into the bye week. Zimmer said the team knew they had to gradually chip away at that 20-point deficit.

“Really, the only way you can do it is you have to go play by play,” Zimmer said. “You have to work it one play at a time, get back to playing smart football and good things typically happen.”

Quarterback Kirk Cousins and the Vikings offense simply didn’t look like themselves in the first half. Cousins completed 11 of 12 passes but for only 58 yards and no scores while also being sacked three times and losing a fumble.

In the second half, it was a completely different story as he threw for 261 yards and three scores on 23 pass attempts.

“We went no-huddle almost the entire game,” Zimmer said. “We went for it on fourth down a couple of times because we needed to. Defensively, we changed up a few things.”

Second-half changes

Zimmer told me this week that the Broncos were going to pose a challenge on defense.

“They are a really good defensive team,” Zimmer said. “I didn’t think offensively we would give up as many big plays as we did, but we did.”

The Vikings’ 37 rushing yards was their worst performance of the season. The Broncos kept Dalvin Cook from making a big impact in the run game.

“They did, they’re a good defensive team. They’re fourth in the league [in defense] and they did a nice job,” Zimmer said. “They’re good, a stout front, [the Broncos’ Vic] Fangio is a heck of a coach. He does a great job defensively. It was important that we stuck with it.”

So how were the Vikings able to get Cousins and the offense going in the second half?

“We got some good matchups in the second half,” Zimmer said. “You know, we got Kirk outside the pocket a little bit, which helped. I just thought we lined up better and a couple of the matchups were pretty good.”

Yes, this game had all the makings of a loss. The start of the game went as poorly as possible for the offense. They didn’t achieve a first down until their third drive, and they only totaled four first downs and 47 yards by halftime.

“I think at the beginning of the game, they gave [Cousins] a few different looks that he wasn’t ready for and so it caused him to hold the ball a little bit or try to pull it down,” Zimmer said. “We just had to emphasize getting the ball out a little bit quicker.”

Historic comeback

The last time the Vikings won after trailing by 20 was in October 1992 against the Bears at the Metrodome. They scored three fourth-quarter touchdowns, including the game-winner on a 1-yard run by Roger Craig with 1:46 left.

Sunday’s rally equaled the fourth-largest comeback in franchise history.

The Vikings’ 8-3 start matches the 11th best in franchise history and their finest since going 9-2 in 2017, when they reached the NFC Championship Game before losing 38-7 to the Eagles. It also keeps them a game behind Green Bay in the NFC North with five games remaining.

Zimmer said that while he’s pleased with the record, he thinks this team has a long way to go before they start thinking about postseason success.

“I mean, 8-3 is a pretty good record, but we need to play better than we did today,” he said. “We need to play better. If we can put it all together, we have a chance to be a good football team, but we have to play better pass defense.”

Tough stretch coming

The biggest benefit to getting the bye right now is a chance for key Vikings players to get healthy.

Zimmer thinks having 15 days before facing Seattle on the road Dec. 2 on “Monday Night Football” should help.

“I think we’ll get a chance to get some guys back,” he said. “We need to get some guys back.”

This team has made big strides this season but they also have a difficult schedule the rest of the way.

After they travel to Seattle for a nationally televised game, they face the Lions at home, then travel to Los Angeles to face the Chargers on Dec. 15, a Sunday night.

They end the season with two games at U.S. Bank Stadium against NFC North rivals, playing the Packers at home Dec. 23 on “Monday Night Football,” then facing the Bears on Dec. 29.

It will be as tough a stretch as any team faces this season.

“That’s what they’re saying about [our schedule],” Zimmer said.

How does he plan to approach the bye?

“We’re going to meet [Monday] and then I’ll figure out what I’m going to do with the players this week,” he said.