There was no way around it, and Kevin O’Connell knew it. The Vikings would open their home schedule, in the third season of the coach’s tenure, against the NFC’s standard bearer, the 49ers team they had beaten the year before but now wanted to mimic.
Vikings upset the 49ers 23-17, beating them at their own game
The Vikings, who have sought to mirror the approach San Francisco has had for years, have now beaten the 49ers twice in 11 months.
He had talked all spring and summer about “play style,” which had become shorthand for an approach that would mirror what the 49ers had done for years. San Francisco used heavier offensive sets more than almost any team in the NFL; the Vikings injected more tension into their training camp practices while sending Aaron Jones on downhill runs behind two tight ends and fullback C.J. Ham. The 49ers had All-Pro linebacker Fred Warner as the nerve center of their defense; on the first day of free agency, the Vikings brought Eden Prairie native Blake Cashman back home as part of a three-player investment in their linebacking corps.
“You know it’s coming. You know they’re on the schedule,” O’Connell said. “I give Kyle and his whole coaching staff and all those players so much credit for what they’ve been able to sustain for so long. And they do it by playing football the right way and imposing their will on opponents. If you want to go anywhere in this league, especially in our conference, it’s going to be a team on your schedule. Whether they were on it initially or not, you’re eventually going to have to play them.”
The 49ers had chiseled their foundation for years; the Vikings were trying to do it in months, with a group of free agents they had just signed. If any matchup, at any time, were to falsify O’Connell’s belief that this team could win now with this approach, a home opener against San Francisco seemed as likely as any.
Instead, after a 23-17 win gave the Vikings their second upset of the 49ers in 11 months, the coach could stand at a podium with a knowing smile that showed just how serious he’d been.
“I told our team last night, ‘I think we’re a really good football team,’” O’Connell said. “Others might be talking about us [in terms of] potential, and whatever that means; you can tell a lot of jokes about potential versus reality, I know that. But this football team is not a joke.”
No doubt he had seen it all: the oddsmakers that set the over-under for the 2024 Vikings at 6½ wins, the tepid preseason predictions (including the ones in the Minnesota Star Tribune), the short positions on quarterback Sam Darnold. And the hedges had seemed reasonable: the Vikings were coming off a 7-10 season, trying to compete in one of the NFL’s toughest divisions with players they’d signed to one-year contracts at key positions.
It would take something significant to swing public perception over to the Vikings’ side. As September victories go, Sunday’s win over the 49ers was about as significant as they come.
The Vikings went 7-for-12 on third downs, converting three on a fourth-quarter drive that took 6 minutes, 46 seconds and sealed the game with a field goal. They sacked Brock Purdy six times, bringing their total to 11 for the season; five of those sacks came in a third quarter when Josh Metellus intercepted Purdy to set up a touchdown that put the Vikings up 20-7.
“When you’re a DB and you don’t get a lot of action, you know the front’s doing something right,” Metellus said. “The ball was coming out fast, just like they said it would. They were getting to the quarterback. Purdy was rattled, you could tell on the back end: not trusting his throws.”
Warner forced two turnovers deep in 49ers territory, intercepting Darnold as he tried to sling one over the middle for Trent Sherfield and punching the ball out of Jones’ hands as the running back approached the goal line on a third-quarter screen pass. But the Vikings forced two turnovers of their own, not including C.J. Ham’s blocked punt that set up Will Reichard’s field goal to start the scoring. They also forced two fourth-down stops, including one at their own 3 when Andrew Van Ginkel tipped a Purdy pass and Harrison Smith deflected it away from Jauan Jennings.
“They had a zero blitz, and one guy came free, which, in our pass protection, that’s just how it is,” Purdy said. “They got a hand on it, a tipped ball at the end, so it was just a good defensive play by them.”
In a game full of swings, the goal line stand preceded the day’s biggest thunderbolt.
The Vikings faced a second-and-9 from their own 3 when O’Connell called for a deep play action shot that “had been in the hopper for a little bit,” dating back to a play they ran against the 49ers last year. The precariousness of the moment, with Darnold lined up in his own end zone as Nick Bosa pressured off the right side, was not lost on O’Connell. “There’s some self-talk that goes into that,” he said. “The opportunity is there for both teams when your heels are in the paint like that.”
But the Vikings protected Darnold against a five-man rush, Jefferson got a step on safety George Odum and Darnold uncorked a throw that traveled 55 yards in the air, before Jefferson caught it with a step on Odum and Ji’Ayir Brown. The receiver sprinted to the left side of the field, then reversed toward the right pylon as the defenders gave chase, and Jalen Nailor (who’d occupied Charvarius Ward on a crossing route) arrived in time for a final block on Odum as U.S. Bank Stadium convulsed with excitement.
“That’s a throw that a quarterback makes. And if he doesn’t make that throw, I don’t know where that ball’s going,” O’Connell said. “That’s big-time quarterback play. For all those folks out there that want some examples of it, I think we’ve got two weeks of some pretty tangible examples of some quarterback play from Sam Darnold.”
The most critical example of it came in the game’s final minutes, when the 49ers had pulled within six and the Vikings had lost Jefferson to a right thigh contusion after a collision with Warner on a run play. Darnold began the drive with Nailor and Trishton Jackson at wide receiver; he fumbled out of bounds on the second play when Warner sacked him.
His third-down completion to Brandon Powell was the first of three on the drive; Darnold would find Nailor for 26 yards on a back-shoulder throw between two defenders, and step to his left away from pressure before hitting Powell for a first down at the 49ers’ 15. The drive cost the 49ers their final two timeouts, and Reichard’s field goal put the Vikings up nine with 3:30 to go.
“No one was surprised when guys were stepping up,” Darnold said. “We’re going to continue to have situations; unfortunately that’s how this league is. Some guys are going to step up or need to step up some weeks and they’re going to continue to do that.”
The quarterback, who’d run the 49ers’ scout team a year ago before signing a one-year deal with the Vikings, had just led a victory to get the Vikings to 2-0. He had little interest in pontificating on what it meant. “I don’t get into narratives like that,” he said.
His coach, who knew the enormity of the challenge the Vikings faced, did not downplay the impact of the fact they’d met it.
“You know you’re signing up for everything you possibly can give on a Sunday afternoon at U.S. Bank Stadium when you welcome them to town,” O’Connell said. “If you can’t tell, I’m absolutely exhausted. I know our team is, but that’s what this is about. I love this football team already. It might seem early, but there is so much that went into this up until today’s performance.”
To get exclusive analysis on the Vikings by Ben Goessling in your inbox every Friday, sign up for the free Access Vikings newsletter here.
Harrison Smith is listed as questionable because of a foot injury. The Vikings also added tight end Nick Muse, and fullback C.J. Ham traveled separately for personal reasons.