

San Francisco 49ers vs Minnesota Vikings Match Player Stats (Sep 15, 2024)
The San Francisco 49ers vs Minnesota Vikings match player stats from their Week 2 meeting at U.S. Bank Stadium show a 23-17 Vikings victory built on explosive plays and third-down dominance. Minnesota’s efficiency crushed San Francisco’s possession advantage in front of 66,741 fans during the 2024 regular season.
Game Snapshot
Final Score | Total Yards | Third Down | Turnovers | Yards Per Play |
---|---|---|---|---|
MIN 23, SF 17 | SF 399, MIN 403 | SF 2/10, MIN 7/12 | 2-2 | SF 6.0, MIN 7.5 |
Top Performers
- Sam Darnold (MIN): 17/26, 268 yards, 2 TD, 109.1 rating
- Justin Jefferson (MIN): 4 rec, 133 yards, 97-yard TD
- Fred Warner (SF): 9 tackles, 1 INT, 2 forced fumbles
- Brock Purdy (SF): 28/36, 319 yards, 1 TD, sacked 6 times
Game-Deciding Stat: Vikings converted 58.3% of third downs compared to San Francisco’s 20%
Table of Contents
Possession vs Production
San Francisco held the ball for 34:48 to Minnesota’s 25:12. The 49ers ran 67 plays to the Vikings’ 54. They picked up 24 first downs to Minnesota’s 17.
They lost.
Minnesota averaged 7.5 yards per snap. San Francisco managed 6.0. Fewer opportunities demand maximum efficiency. The Vikings delivered. The 49ers didn’t.
Complete Team Statistics
Category | San Francisco 49ers | Minnesota Vikings |
---|---|---|
Total Yards | 399 | 403 |
Plays Run | 67 | 54 |
First Downs | 24 | 17 |
Third Down | 2-10 (20%) | 7-12 (58.3%) |
Fourth Down | 1-3 (33.3%) | 0-0 |
Red Zone | 2-4 (50%) | 1-3 (33.3%) |
Penalties | 4-30 | 7-53 |
Time of Possession | 34:48 | 25:12 |
GAME-CHANGING PLAYS
Minnesota scored 17 of their 23 points off three sequences:
- Blocked punt → 22-yard FG (3 points)
- 97-yard TD pass to Jefferson (7 points)
- Interception → immediate 10-yard TD to Nailor (7 points)
High-leverage execution decided the outcome.
Sam Darnold’s Performance Against Former Team
Playing the franchise that kept him on the bench throughout 2023, Darnold completed 17 of 26 passes for 268 yards and two touchdowns in his first home start for Minnesota. His passer rating of 109.1 included the game’s biggest play: a 97-yard touchdown pass to Justin Jefferson.
“Sam has been making a whole bunch of great decisions,” Jefferson said after the game, per Vikings.com. “We’ve got to just keep trusting in him to make those decisions.”
Vikings head coach Kevin O’Connell showed the confidence Darnold never received in San Francisco. “The amount of work that goes into that position on your quarterback journey when everybody decides that you can not play, we always believed in him,” O’Connell said. “It felt awesome to watch him go do that thing.”
Despite being sacked three times, Darnold avoided major mistakes and delivered when Minnesota needed scores. According to CBS Sports, his second-half performance showcased his ability to manage pressure and make crucial throws during scoring drives.
“I don’t get into narratives like that,” Darnold said when asked about facing his former team. “I think the biggest thing for us is just continuing to take it one day at a time.”
Vikings Offensive Production
Player | Position | Passing | Rushing | Receiving |
---|---|---|---|---|
Sam Darnold | QB | 17/26, 268 yards, 2 TD, 1 INT | 5 carries, 32 yards | – |
Justin Jefferson | WR | – | – | 4 rec, 133 yards, 1 TD |
Ty Chandler | RB | – | 10 carries, 82 yards | – |
Jalen Nailor | WR | – | – | 3 rec, 54 yards, 1 TD |
Aaron Jones | RB | – | 9 carries, 32 yards | 5 rec, 36 yards |
Justin Jefferson’s Record Day Cut Short
Jefferson caught four passes for 133 yards before a quad injury forced him out in the third quarter. His 97-yard touchdown reception ranks as the second-longest play in Vikings history, trailing only Gus Frerotte’s 99-yard touchdown pass to Bernard Berrian in 2008.
The score is officially a 98-yard drive because it started at the 2-yard line. Jefferson caught the ball from Darnold at the “n” in “Vikings” painted in the west end zone and reached the opposite end zone pylon for six points. One week earlier, the Vikings had driven 99 yards for a touchdown against the Giants.
Jefferson’s reception was his 400th career catch, tying him with Ahmad Rashad for eighth in franchise history. He also passed 6,000 career receiving yards in just 62 games, matching Lance Alworth’s 1960s record for the fewest games to reach that milestone.
The injury occurred late in the third quarter while Jefferson was blocking on a run play. He didn’t return, forcing Minnesota to adjust their offense without their top weapon.
Fred Warner’s Two-Turnover Game Wasted
Warner finished with 9 tackles, 1 sack, 1 interception, and 2 forced fumbles. The two forced fumbles established a new career high for a single game.
His diving interception in the red zone during the second quarter set up San Francisco’s first touchdown drive. The 49ers offense converted that turnover into a 65-yard scoring march capped by a 7-yard touchdown pass from Brock Purdy to George Kittle.
In the fourth quarter, Warner forced a fumble from Aaron Jones at the 1-yard line, preventing a Vikings touchdown. Isaac Yiadom recovered the loose ball, giving San Francisco possession to start a 99-yard scoring drive. Jordan Mason finished that drive with a 10-yard touchdown run that cut Minnesota’s lead to 20-14.
According to PFF’s analysis, Warner was their Player of the Game despite the loss. Over 21 snaps against the run, he recorded five defensive stops with an average tackle depth of just 1.2 yards past the line of scrimmage. On 30 coverage snaps, quarterbacks targeted him four times, completing two passes for 29 yards while Warner picked off one throw and broke up another.
Individual excellence couldn’t overcome team failures.
49ers Offensive Statistics
Player | Position | Passing | Rushing | Receiving |
---|---|---|---|---|
Brock Purdy | QB | 28/36, 319 yards, 1 TD, 1 INT | 2 carries, 12 yards | – |
Jordan Mason | RB | – | 20 carries, 100 yards, 1 TD | 1 rec, 4 yards |
Deebo Samuel | WR | – | 2 carries, -10 yards | 8 rec, 110 yards |
George Kittle | TE | – | – | 7 rec, 76 yards, 1 TD |
Brandon Aiyuk | WR | – | – | 4 rec, 43 yards |
Jordan Mason Steps Up Without McCaffrey
With Christian McCaffrey on injured reserve, Mason delivered his second consecutive 100-yard game. He carried 20 times for 100 yards and scored a 10-yard touchdown in the fourth quarter.
Mason averaged 5.0 yards per carry against a Vikings defense ready to stop the run. 49ers head coach Kyle Shanahan told reporters after the game that “nobody knows” when McCaffrey will return from his lower leg injuries.
The 49ers face questions about their ground game going forward. For more on San Francisco’s offensive adjustments, see our analysis of the San Francisco 49ers vs Seattle Seahawks match from their Week 3 divisional matchup.
Third Down Execution Decided Outcome
Minnesota converted 7 of 12 third-down attempts. San Francisco converted 2 of 10.
That 38.3 percentage point gap explains the outcome better than any other statistic. Minnesota’s offense stayed on the field during crucial moments. San Francisco’s offense couldn’t sustain drives.
The Vikings’ final field goal drive exemplified their third-down success. They ran 14 plays for 62 yards, converting multiple third downs while burning 6:46 off the clock. The drive ended with Will Reichard’s 27-yard field goal that made the score 23-14 with 3:32 remaining.
Minnesota had struggled on third down for most of the game before finding their rhythm in crucial moments, converting when games were on the line.
Key Efficiency Metrics
Category | San Francisco | Minnesota |
---|---|---|
Third Down | 2/10 (20%) | 7/12 (58.3%) |
Fourth Down | 1/3 (33.3%) | 0/0 |
Red Zone | 2/4 (50%) | 1/3 (33.3%) |
Yards Per Pass | 8.2 | 9.9 |
Yards Per Rush | 4.1 | 6.1 |
Blake Cashman’s 13-Tackle Performance
Cashman led all players with 13 tackles while adding three passes defensed and a sack. The linebacker was involved on the first two tackles of the game and recorded a pass breakup on the third play.
Patrick Jones II contributed two sacks, part of Minnesota’s six-sack total. Andrew Van Ginkel and Jonathan Greenard each added a sack as the Vikings’ pass rush consistently pressured Purdy.
Nick Bosa recorded two sacks for San Francisco before briefly leaving the game with an injury in the third quarter. He returned to finish the contest. Fred Warner and Kevin Givens each added a sack, giving the 49ers four total.
Defensive Statistics
Minnesota Vikings
Player | Position | Tackles (Solo) | Sacks | TFL | INT | PD |
---|---|---|---|---|---|---|
Blake Cashman | LB | 13 (5) | 1 | 1 | 0 | 3 |
Ivan Pace Jr. | LB | 9 (6) | 0 | 1 | 0 | 0 |
Cam Bynum | S | 8 (3) | 0 | 0 | 0 | 0 |
Joshua Metellus | S | 7 (5) | 0 | 1 | 1 | 1 |
Stephon Gilmore | CB | 6 (5) | 0 | 0 | 0 | 0 |
Harrison Smith | S | 5 (3) | 0 | 0 | 0 | 1 |
Patrick Jones II | LB | 5 (2) | 2 | 2 | 0 | 0 |
Andrew Van Ginkel | LB | 4 (4) | 1 | 2 | 0 | 1 |
San Francisco 49ers
Player | Position | Tackles (Solo) | Sacks | TFL | INT | FF |
---|---|---|---|---|---|---|
Fred Warner | LB | 9 (7) | 1 | 1 | 1 | 2 |
Deommodore Lenoir | CB | 6 (2) | 0 | 0 | 0 | 0 |
Nick Bosa | DE | 5 (4) | 2 | 2 | 0 | 0 |
Ji’Ayir Brown | S | 5 (4) | 0 | 0 | 0 | 0 |
De’Vondre Campbell | LB | 5 (2) | 0 | 1 | 0 | 0 |
Special Teams Swung Early Momentum
Vikings fullback C.J. Ham blocked a Mitch Wishnowsky punt in the first quarter. Safety Theo Jackson scooped up the football and returned it 37 yards to the San Francisco 24-yard line. Three plays later, Will Reichard kicked a 22-yard field goal for a 3-0 lead.
San Francisco never led after that mistake.
Reichard converted all three field goal attempts (22, 39, and 27 yards) and both extra points. His 11 points accounted for nearly half of Minnesota’s scoring. Jake Moody was also perfect for San Francisco, making his only field goal attempt from 31 yards and both extra points.
Ryan Wright averaged 50.3 yards on three punts for Minnesota. Wishnowsky averaged 49.5 yards on two punts before the blocked kick (or 33.0 on three punts if you count the blocked attempt).
Brandon Powell returned one punt for 10 yards for Minnesota. Jacob Cowing had one punt return for zero yards for San Francisco. Deebo Samuel handled kickoff return duties for the 49ers, returning one for 21 yards. The Vikings had no kickoff returns.
Complete Scoring Summary
Quarter | Time | Team | Play | Score |
---|---|---|---|---|
1st | 4:48 | MIN | Will Reichard 22-yard FG | SF 0, MIN 3 |
2nd | 9:51 | MIN | Justin Jefferson 97-yard pass from Sam Darnold (Reichard kick) | SF 0, MIN 10 |
2nd | 2:00 | SF | George Kittle 7-yard pass from Brock Purdy (Moody kick) | SF 7, MIN 10 |
2nd | 0:03 | MIN | Will Reichard 39-yard FG | SF 7, MIN 13 |
3rd | 6:53 | MIN | Jalen Nailor 10-yard pass from Sam Darnold (Reichard kick) | SF 7, MIN 20 |
4th | 10:21 | SF | Jordan Mason 10-yard run (Moody kick) | SF 14, MIN 20 |
4th | 3:32 | MIN | Will Reichard 27-yard FG | SF 14, MIN 23 |
4th | 1:15 | SF | Jake Moody 31-yard FG | SF 17, MIN 23 |
97-Yard Touchdown Broke Game Open
With the Vikings leading 3-0 early in the second quarter, Darnold dropped back from his own 3-yard line. He launched a deep ball to Jefferson, who had beaten safety George Odum down the left sideline. Jefferson caught the football outside the left 20-yard line and reached the opposite end zone for a touchdown.
The play covered 97 yards through the air. Combined with the snap at the 2-yard line, it officially counted as a 98-yard scoring drive that took one play and 52 seconds. Minnesota’s lead grew to 10-0.
Odum, filling in for injured safety Talanoa Hufanga, was the last line of defense and couldn’t make the tackle.
Joshua Metellus Intercepts Deflected Pass
Early in the third quarter with San Francisco threatening to score, Purdy threw a pass that went from his hand to Blake Cashman, then to Joshua Metellus, then to Camryn Bynum, and back to Metellus. The safety secured his third career interception and returned it 12 yards.
On the very next play from scrimmage, taking just four seconds off the game clock, Darnold hit Jalen Nailor for a 10-yard touchdown. Minnesota’s lead ballooned to 20-7.
The sequence transformed a potential scoring opportunity for San Francisco into seven points for Minnesota in seconds.
Isaac Yiadom’s Two Fumble Recoveries
The 49ers cornerback recovered two fumbles that kept San Francisco in the game. In the third quarter, Yiadom secured a muffed punt that could have been disastrous, giving the 49ers the ball at their own 13-yard line.
Later, after Warner forced the ball from Aaron Jones’ hands at the 1-yard line, Yiadom fell on the loose ball again. That recovery gave San Francisco possession to start their 99-yard scoring drive.
There was also a moment when linebacker Jihad Ward appeared to record his first interception in his 104th NFL game. The outside linebacker plucked a pass from the air, but officials reviewed the play and ruled it a fumble recovery instead of an interception.
Brock Purdy Under Constant Pressure
Purdy completed 28 of 36 passes for 319 yards and a touchdown. But he was sacked six times for a loss of 25 yards and lost a fumble.
Minnesota’s pass rush relentlessly attacked. The Vikings brought down Purdy six times while the 49ers brought down Darnold three times. Nick Bosa’s two sacks led San Francisco’s effort, with Warner and Givens each adding one.
The pressure differential proved critical. Darnold had time to find receivers downfield. Purdy spent too many snaps avoiding rush.
San Francisco committed just 4 penalties for 30 yards compared to Minnesota’s 7 penalties for 53 yards. But discipline couldn’t overcome the turnover battle and explosive play disadvantage.
Passing Statistics Comparison
Stat | Brock Purdy (SF) | Sam Darnold (MIN) |
---|---|---|
Completions/Attempts | 28/36 | 17/26 |
Completion % | 77.8% | 65.4% |
Passing Yards | 319 | 268 |
Yards Per Attempt | 8.9 | 10.3 |
Touchdowns | 1 | 2 |
Interceptions | 1 | 1 |
Sacks Taken | 6 | 4 |
Passer Rating | 101.3 | 109.1 |
Turnover Breakdown
Fumbles
Team | Player | Fumbles | Lost | Recovered |
---|---|---|---|---|
SF | Brock Purdy | 1 | 1 | 0 |
SF | Jordan Mason | 1 | 0 | 1 |
SF | Jacob Cowing | 1 | 0 | 0 |
SF | Isaac Yiadom | 0 | 0 | 2 |
MIN | Sam Darnold | 2 | 0 | 1 |
MIN | Aaron Jones | 1 | 1 | 0 |
MIN | Jihad Ward | 0 | 0 | 1 |
Interceptions
San Francisco: Fred Warner (1 INT, 25 yards)
Minnesota: Joshua Metellus (1 INT, 12 yards)
Receiving Production Beyond Jefferson
Minnesota Vikings Pass Catchers
Player | Receptions | Targets | Yards | Long | Touchdowns |
---|---|---|---|---|---|
Justin Jefferson | 4 | 7 | 133 | 97 | 1 |
Jalen Nailor | 3 | 4 | 54 | 26 | 1 |
Aaron Jones | 5 | 6 | 36 | 18 | 0 |
Trent Sherfield | 1 | 2 | 17 | 17 | 0 |
Brandon Powell | 2 | 2 | 16 | 11 | 0 |
Johnny Mundt | 2 | 3 | 12 | 6 | 0 |
Jalen Nailor caught 3 passes for 54 yards and a touchdown, then took on an expanded role after Jefferson’s injury. His 10-yard score in the third quarter came on the play immediately after Metellus’ interception, consuming just four seconds of game clock. Aaron Jones provided dual-threat value with 5 receptions for 36 yards, contributing to Minnesota’s balanced offensive attack.
San Francisco 49ers Pass Catchers
Player | Receptions | Targets | Yards | Long | Touchdowns |
---|---|---|---|---|---|
Deebo Samuel | 8 | 10 | 110 | 28 | 0 |
George Kittle | 7 | 8 | 76 | 25 | 1 |
Brandon Aiyuk | 4 | 5 | 43 | 22 | 0 |
Jauan Jennings | 2 | 4 | 37 | 25 | 0 |
Eric Saubert | 2 | 2 | 26 | 14 | 0 |
Kyle Juszczyk | 3 | 5 | 19 | 8 | 0 |
Chris Conley | 1 | 1 | 4 | 4 | 0 |
Jordan Mason | 1 | 1 | 4 | 4 | 0 |
Deebo Samuel led all receivers with 8 catches for 110 yards despite taking a 10-yard loss on two rushing attempts. George Kittle was reliable in his 100th career game, catching all 7 targets for 76 yards and the 49ers’ only receiving touchdown.
Kittle’s milestone game included a historic achievement. His 76 yards gave him 6,390 career receiving yards through 100 games, the third-most by a tight end at the 100-game mark in NFL history. Only Rob Gronkowski (7,112) and Travis Kelce (6,762) had more through their first 100 games. He caught all five passes thrown his way in the first half for 56 yards, including a 25-yard grab and his 7-yard touchdown reception.
Brandon Aiyuk provided solid secondary support with 4 catches for 43 yards on 5 targets. Kyle Juszczyk caught 3 passes for 19 yards while serving as a checkdown option in the flat.
Injuries Affected Both Rosters
San Francisco played without Christian McCaffrey, who had been placed on injured reserve the day before the game. Shanahan said after the loss that “nobody knows” when McCaffrey will return from his lower leg injuries.
Minnesota was missing Jordan Addison, who sat out with an ankle injury suffered in Week 1. Rookie outside linebacker Dallas Turner also left the game with a knee injury, though Vikings head coach O’Connell said it wasn’t serious.
Jefferson’s quad injury while blocking in the third quarter forced Minnesota to finish without their top weapon. Safety Talanoa Hufanga missed his second straight game for San Francisco with a knee injury. Nick Bosa briefly left in the third quarter with an injury on a rushing attempt by the Vikings but returned to finish.
ALL-TIME SERIES
Overall: Tied 25-25-1
Regular Season: MIN 24-20-1
Playoffs: SF 5-1
At Minnesota: MIN won last 8 games
Last SF win in Minneapolis: 1992
Historical Context: Minnesota Dominates at Home
This loss extended San Francisco’s road struggles in Minneapolis to eight straight games. The 49ers haven’t won in Minnesota since 1992. That’s 32 years of losing in the Twin Cities.
The all-time series between these teams now stands at 25-25-1 overall. Minnesota holds a 24-20-1 advantage in regular season games. In the playoffs, San Francisco leads 5-1.
This victory was just the beginning for Minnesota’s 2024 season, which carried momentum all the way into 2025. The team’s explosive offensive approach and defensive pressure that defined this win became their calling cards. For context on how the Vikings built on this performance, see our breakdown of the Chicago Bears vs Minnesota Vikings Week 1 matchup in September 2025, where J.J. McCarthy made his NFL debut with another fourth quarter comeback that mirrored this same never-say-die mentality.
Frequently Asked Questions
How many sacks did Brock Purdy take in this game?
Purdy was sacked 6 times for a total loss of 25 yards. Patrick Jones II led Minnesota with 2 sacks, while Blake Cashman, Andrew Van Ginkel, and Jonathan Greenard each recorded one sack. The 49ers defense sacked Sam Darnold 3 times.
What injury did Justin Jefferson suffer?
Jefferson suffered a quadriceps injury while blocking on a run play late in the third quarter. He finished with 4 receptions for 133 yards and 1 touchdown before being ruled out for the remainder of the game.
Who won the turnover battle?
Both teams turned the ball over twice. San Francisco lost a Purdy fumble and threw one interception. Minnesota lost an Aaron Jones fumble and threw one interception. The difference was when and where the turnovers occurred, with Minnesota’s coming in less critical situations.
What was George Kittle’s historic milestone in this game?
Kittle played his 100th career NFL game and reached 6,390 receiving yards through 100 games, the third-most by a tight end at that milestone behind Rob Gronkowski (7,112) and Travis Kelce (6,762).
How long was Justin Jefferson’s touchdown reception?
Jefferson’s touchdown covered 97 yards through the air, the second-longest play in Vikings history behind only a 99-yard touchdown from Gus Frerotte to Bernard Berrian in 2008. The play officially counted as a 98-yard scoring drive because it started from the 2-yard line.
What was the key statistical difference between the two teams?
The most significant gap was third-down conversion rate. Minnesota converted 7 of 12 attempts (58.3%) while San Francisco converted only 2 of 10 (20%). This 38.3 percentage point difference allowed Minnesota to sustain drives and control crucial moments despite having less possession time.
Why San Francisco Lost
San Francisco held the ball for nearly 35 minutes but couldn’t convert drives into points. Minnesota scored efficiently on limited possessions.
Minnesota’s 7.5 yards per play crushed San Francisco’s 6.0. The Vikings converted 58.3% of third downs compared to the 49ers’ 20%. That 38.3 percentage point gap meant Minnesota stayed on the field during crucial moments while San Francisco couldn’t sustain drives.
The Vikings scored 17 of their 23 points off three sequences: the blocked punt leading to a field goal, the 97-yard touchdown pass, and an interception immediately converted into a touchdown. High-leverage plays decided the outcome.
Warner’s brilliance kept San Francisco competitive, but one player can’t overcome systematic breakdowns in pass protection, special teams, and third-down execution.
Final Analysis: Vikings 23, 49ers 17
The San Francisco 49ers vs Minnesota Vikings match player stats from Week 2 of 2024 demonstrate that controlling possession doesn’t guarantee victory when you can’t protect your quarterback or convert third downs.
Minnesota improved to 2-0. San Francisco fell to 1-1. The Vikings extended their home winning streak against the 49ers to eight games.
Darnold proved he belongs. Mason showed he can carry the load without McCaffrey. Jefferson reminded everyone why he’s elite before getting hurt. Warner played like an All-Pro in a losing effort.
Efficiency beat possession. Explosive plays beat ball control. Third-down execution beat time of possession. Minnesota proved all three principles in one afternoon at U.S. Bank Stadium.
Interestingly, Darnold’s only start for the 49ers in 2023 came in a 21-20 loss to the Los Angeles Rams on January 7, 2024. That ended San Francisco’s 10-game regular season winning streak over their division rival. The Vikings hosted Houston next, a team they’re 5-0 against all time. The 49ers visited those same Rams in Week 3.