
The Minnesota Vikings pulled off the biggest upset of Week 9 when they marched into Ford Field and defeated the Detroit Lions 27-24.
Head coach Kevin O'Connell had his players ready to play, and they overcame the multitude of talk surrounding the team about there being tension in the organization. They didn't just play well on Sunday, they were dominant in stretches against their division rival.
The biggest standouts throughout the game were pretty obvious, but the why behind them still leaves multiple questions.
This one is pretty simple. Throughout the six weeks and five games that J.J. McCarthy ended up missing, there was an insane amount of discussion about potentially replacing him and/or moving on after the season. This came after he had played in just two NFL games. It was incredibly premature, and what we saw on Sunday afternoon gives us a lot of hope for the future.
While McCarthy only threw 25 passes on the day, it was enough to get the win. He only turned the ball over one time, and that in itself was questionable at best. Where things get a little more confident moving forward is how O'Connell handled the endgame. With the game and arguably the season on the line, he trusted McCarthy to throw the ball, and he delivered with a beautiful back shoulder fade to Jalen Nailor to seal the victory.
Put the Nailor in this one. pic.twitter.com/9sWqcpxu4w
— NFL (@NFL) November 2, 2025
When the Vikings signed Wilson as a depth linebacker, it was far from praised. He was viewed as the next Kamu Grugier-Hill, and that was a replacement-level player. Coming out of the bye week, Wilson has become a much more important player.
Against the Lions, Wilson was a crucial player to the success of the team. He pressured quarterback Jared Goff five times, got two sacks, and was pivotal in stopping the run. It shows that the Vikings believe that having two versatile linebackers who can do everything is so important to the success of the defense. It could end up being something that the Vikings prioritize moving forward.
After last week's loss to the Los Angeles Chargers, Blake Cashman called out the team.
"For lack of a better term, nut up."
When you make a call out like that, it's really important that you take care of business. Not only did Cashman take care of business, he was dominant. Cashman was on fire and playing great football. He logged 14 tackles and forced a key fumble in the second half that helped the Vikings flip the script. Cashman is arguably the most important player on the Vikings' defense, and he continues to play like it.
.@blockayyy punches it out!!!
— Minnesota Vikings (@Vikings) November 2, 2025
: @NFLonFOX pic.twitter.com/ab1mfWIlt8
Dallas Turner not playing many snaps could be a major factor moving forward or it could be gameplan specific, as we saw some interesting snap counts on Sunday afternoon. With the return of Andrew Van Ginkel, the player deemed a "third starter" at edge rusher only played 14 of a possible 64 snaps on defense.
It's one of two reasons: gameplan specific, or defensive coordinator Brian Flores didn't want him on the field so much. It's likely the first one, especially with Wilson playing all but eight snaps and Cashman playing all 64. The strategy worked in stopping the Lions' running game, as they logged just 65 yards on the day. This will be something to monitor moving forward to see if it was an isolated decision.
Cornerback has been a tough spot for the Vikings all season long. There have been some serious discussions about the position, with many linking the Vikings to trading for a cornerback. They were very confident about their top two cornerbacks with Rodgers elevating into a starting role.
Sunday's game wasn't the best for Rodgers. He got cooked by Jameson Williams in two different ways: Williams smoked him on a hitch route to get a first down on third and 14 with yards after the catch, and then on a touchdown in the final two minutes of the game. Rodgers needs to be better in those situations.
window.addEventListener('message', function (event) {if (event.data.totalpoll && event.data.totalpoll.action === 'resizeHeight') {document.querySelector('#totalpoll-iframe-383').height = event.data.totalpoll.value;}}, false);document.querySelector('#totalpoll-iframe-383').contentWindow.postMessage({totalpoll: {action: 'requestHeight'}}, '*');
More must-reads:
+
Get the latest news and rumors, customized to your favorite sports and teams. Emailed daily. Always free!