What We Saw: 49ers at Vikings

The Vikings pulled off the upset and defeated the 49ers on Monday Night.

San Francisco 49ers @ Minnesota Vikings

Final Score: Vikings 22, 49ers 17

Writer: Adam Nardelli (@adamnardelli on X/Twitter)

Two playoff teams from a year ago met in one of the best environments the NFL has to offer in Minneapolis: U.S. Bank Stadium.  The Vikings began the game with something their fans are all too familiar with in 2023, a turnover, when Kirk Cousins tried to force a pass to Jordan Addison.  Shockingly the (5-1) 49ers followed that up with a turnover of their own when Christian McCaffrey uncharacteristically fumbled on the Vikings 12-yard line.  By the middle of the second quarter, the 49ers engineered two drives that ended deep in Vikings territory, yet came up with zero points (another possession ended in a missed 40-yard field goal).  Minnesota couldn’t keep Brock Purdy and the rest of the 49ers offense down for long though, as Purdy led a 13 play, 75-yard drive culminating in a McCaffrey touchdown before the end of the first half. Before the end of the first half, Addison stole the ball away from a 49ers defender, a terrific play that led to a 60-yard touchdown.  The stories of the second half were turnovers committed by the 49ers and the Vikings’ consistent ability to convert on third down. Cousins, famous for his Monday night meltdowns, played one of the best games of his career against an excellent defense.

Three Up

  • Jordan Addison – As Troy Aikman said during the broadcast, Addison grew up before our eyes tonight.  The game of his career so far.
  • George Kittle – For a guy who has had his ups and downs in fantasy this year, he was the George Kittle we all know and love, and made his presence known the day after National Tight End Day.
  • TJ Hockenson – His best stat line of the year; he ended with an almost 28% target share.

Three Down

  •  Brock Purdy – He didn’t play terribly but threw two interceptions at critical times in the fourth quarter.  He proved that he actually is human and makes mistakes.
  • Alexander Mattison – This offense just doesn’t run the ball enough for him to have a real shot at being as impactful as his fantasy managers need him to be right now.
  • Brandon Aiyuk – This may be a little harsh, but when you have 57 yards in the first half and zero in the second, the end result is disappointment.


San Francisco 49ers




Brock Purdy:  21/30, 272 yards, TD, 2 INTs | 5 carries, 19 yards, 1 sack

As I mentioned earlier, Purdy led two first-half drives deep into Minnesota territory, but they resulted in zero points through no fault of his own. He started in typical Purdy fashion, completing 12 of his first 15 passes, but the 49ers still only had seven points midway through the third quarter.  That all changed when Purdy and the 49ers scored on a three-play 75-yard drive after McCaffrey took a screen pass for a 35-yard touchdown. It was a great example of how quickly the 49ers can turn on the jets and score before you take a breath.

The fourth quarter was a different story for Purdy and one he hopes to forget.  The former Round 7-pick threw two interceptions late in the fourth, both to Safety Camryn Bynum.  The first was a ball intended for Jauan Jennings that Purdy sailed, and as Kyle Shanahan noted after the game, the one bad throw Purdy made.  The second interception came on the final drive on an overthrown pass intended for Ray-Ray McCloud, which ended the game.  With no timeouts and under 40 seconds left, it’s reasonable to think Purdy was trying to make a play out of desperation on his second interception.  The Arizona native is facing his first true adversity in the NFL.


Running Back


Christian McCaffrey: 15 carries, 45 yards, TD | 3 targets, 3 receptions, 51 yards, TD

Anyone who thought Kyle Shanahan would limit McCaffrey’s carries due to an oblique injury was severely mistaken after he carried the ball 11 times in the first half.  While he extended his touchdown streak to 16 games, the explosive plays for McCaffrey were missing in the first half.  It was difficult not to think the oblique injury, suffered last week in Cleveland, wasn’t playing some sort of role in hindering McCaffrey. However, he took a screen pass from Purdy 35 yards for a touchdown in the third quarter.  It was a welcomed site for McCaffrey owners, who were concerned by his lack of efficiency early in the game.  McCaffrey had an untimely fumble inside the red zone in the first quarter, but after watching his press conference after the game, I’d be surprised if he fumbled again this season!

Elijah Mitchell: 1 carry, -1 yards

2021 seems like forever ago; that’s when Mitchell was a fantasy darling. Not so much these days.

Jordan Mason: 0 carries | 0 targets

Normally I wouldn’t note anything down about a guy who didn’t play, but it was a little surprising the 49ers didn’t use Mason at least slightly to help give banged-up McCaffrey a little break.  Mason has made the most of his opportunities so far this year.


Wide Receiver/Tight End

George Kittle:  7 targets, 5 receptions, 78 yards

Kittle started to heat up late in the third and fourth quarters after a quiet first half.  Two big chunk plays by Kittle in the second half led to a touchdown and a long field goal, keeping the 49ers right on the heels of the Vikings.  Considering yesterday was National Tight Ends Day and George Kittle invented our country’s newest holiday, it’s only right for him to put up a nice fantasy day.

Brandon Aiyuk: 6 targets, 5 receptions, 57 yards

Aiyuk continues to solidify his role as the 49ers’ WR1.  The rapport he has with Brock Purdy was never more evident than when Purdy connected with Aiyuk for 25 yards on a 3rd & 7 in the second quarter.  As encouraging as the first half was, the second half was almost shocking considering Aiyuk didn’t catch a single pass.  On a night where the 49ers were trailing the entire third and fourth quarters, it’s a head-scratcher how he wasn’t even targeted.

Jauan Jennings:  9 targets, 5 receptions, 54 yards

The former Tennessee Volunteer stepped up in Deebo Samuel’s absence and gave Purdy another reliable pass-catching option.  Jennings showed he could make something happen in space when he caught a short pass late in the third quarter from Purdy and made a nifty move forcing a 49ers missed tackle for a nice gain on first down.  Anyone getting nine targets in this offense should be seriously considered for fantasy, but his fantasy impact is likely tied to Deebo Samuel’s future availability.

Ray-Ray McCloud III: 3 targets, 2 receptions, 20 yards

Ross Dwelley: 1 target, 1 reception, 12 yards


Minnesota Vikings




Kirk Cousins: 35/45 378 yards, 2 TDs, 1 INT | 2 carries, -1 yards, 0 sacks

Outside of the first-quarter interception, Cousins was in command against one of the NFL’s best defenses.  The offensive line gave him time to throw and he took advantage of it, especially when it counted the most on third down. While he mostly looked for his top two pass catchers in Jordan Addison and T. J. Hockenson, Cousins got six-year veteran Brandon Powell involved as well.  He averaged over eight yards per attempt and made some of his most impressive plays late in the fourth quarter under pressure.  With just under five minutes left, Cousins was staring at a 49ers defender right in his face and somehow completed an eight-yard pass to K. J. Osborn.  On a 3rd and 4 with a little over two minutes left, Cousins was almost certainly going to be sacked, but miraculously maneuvered away from pressure and found Addison for a first down.  As Joe Buck said at the end of the broadcast, Cousins was “absolutely sensational.”  If this wasn’t the best game from Cousins I’ve ever seen, it’s right up there, and on Monday night no less!


Running Back


Alexander Mattison: 8 carries, 39 yards | 3 targets, 2 receptions, 3 yards

Mattison shot out of a cannon on the first play from scrimmage after taking a handoff from Kirk Cousins 19 yards.  He was only able to manage 20 more rushing yards the rest of the game, and actually ended with fewer carries than Cam Akers.  It’s the third straight game where Mattison has under 50 rushing yards.  His lack of involvement in the passing game tonight contributed to another rather disappointing outing for Mattison.  The encouraging takeaway: he was still able to do a lot more with his carries than Akers, as Mattison averaged almost five yards per carry.

Cam Akers: 10 carries, 31 yards | 3 targets, 30 yards

The former Los Angeles Ram who the Vikings recently traded for is getting more involved in his new home. Akers’ 30-yard reception on a screen pass in the second quarter led to a field goal.  However, the discouraging part of Akers’ night is that he wasn’t able to shake one of the big issues he had with the Rams: lack of efficiency (3.1 yards per carry).

Ty Chandler: 1 target, 1 reception, 12 yards


Wide Receiver/Tight End


Jordan Addison: 10 targets, 7 receptions, 123 yards, 2 TDs

It was evident who Kirk Cousins views as the Vikings WR1 while Justin Jefferson is out.  Cousins forced a throw to Addison that was ripped away by Charvarius Ward on the first drive, but the veteran quarterback went right back to the rookie from USC on the second drive, which culminated in a 20-yard touchdown pass to Addison.  Right before the end of the first half, Addison got the best of Ward, stealing the ball away on an underthrown pass and taking it all the way for a 60-yard touchdown.  It’s one of the more impressive plays I’ve seen so far this season, and I definitely recommend checking it out if you haven’t already.  Addison left the game for a bit due to cramps in the second half but later returned.  Addison had his breakout game for the world to see on Monday night, and it’s clear that he and Justin Jefferson have the potential to form the NFL’s next great receiving duo.



TJ Hockenson: 12 targets, 11 receptions, 86 yards

On the day after National Tight Ends Day, Hockenson did it all for the Vikings offense. He was most dangerous in the middle of the field where he and Cousins connected for some good chunk plays early on, including a 22-yarder.  The Iowa product also got involved in the screen game, taking a short pass from Cousins for 11 yards. He was often targeted on underneath routes to help the Vikings stay ahead of the chains.  He’s everything a team wants in a tight end, and after a game like tonight, there’s no reason to think he won’t continue to demand a significant target share, especially while Justin Jefferson remains sidelined.

Brandon Powell: 5 targets, 4 receptions, 64 yards

Does Zay Flowers play for the Vikings, too?  Powell, who also wears number 4, at times looked just like the impressive Ravens rookie.  Powell showed some nice run-after-the-catch ability when he connected with Cousins on a comeback route for 27 yards in the third quarter and then again on a 12-yard reception in the fourth.  The former undrafted receiver was able to make a tough catch going to the ground on third down in the fourth quarter to keep a key drive alive.  A potential hidden gem, Powell looks like a guy with some untapped explosiveness, someone the Vikings may want to get the ball more to in space to see what he can do.

K. J. Osborn: 6 targets, 5 receptions, 47 yards

Six targets for a guy that’s at best the third receiving option is a positive.  It would’ve been nice to see him get a little more out of those targets, especially given that he has exhibited some deep-threat ability in the past. Osborn’s silver lining: he did link up with Cousins on an 18-yard reception to start a third-quarter drive.


Trishton Jackets: 1 target, 1 reception, 7 yards

Josh Oliver:  2 targets. 2 receptions, 6 yards


Photo by Nick Wosika/Icon Sportswire | Adapted by Justin Paradis (@JustParaDesigns on Twitter/X)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.