MINNEAPOLIS — Sam Darnold passed for 268 yards and two touchdowns against his former team, including a 97-yard strike in the second quarter to Justin Jefferson, and an attacking defense again fueled the Minnesota Vikings in a 23-17 victory over the San Francisco 49ers on Sunday.
Darnold went 17 for 26 with one interception to win his second straight start for the Vikings (2-0), who used the last of three field goals by rookie Will Reichard to give themselves a bigger cushion midway through the fourth quarter.
Blake Cashman had 13 tackles, six passes defensed and a sack and Patrick Jones II had two of the six sacks of Brock Purdy, who threw two interceptions and found himself playing from behind all game. Purdy went 28 for 36 for 319 yards.
Overcoming two red zone turnovers that the 49ers (1-1) turned into touchdowns and a quadriceps injury that forced Jefferson out of the game in the third quarter, Darnold and the Vikings put on a show in his home debut after backing up Purdy last season for the NFC champions.
San Francisco lost for the eighth straight time in Minnesota, including for the second straight year. The most recent win here was in 1992.
Jordan Mason rushed 20 times for 100 yards and a touchdown for the 49ers in another fine fill-in for All-Pro Christian McCaffrey, who will miss at least two more games with injuries to his calf and Achilles tendon.
The Vikings might well have won in a runaway were it not for Fred Warner, the three-time All-Pro linebacker who made his NFL debut for the 49ers in the season opener at Minnesota in 2018.
Warner, who finished with nine tackles and two passes defensed, made a diving interception at the San Francisco 10 to thwart a promising drive with the Vikings leading 10-0. The 49ers seized the momentum with a five-play march capped with a touchdown pass from Purdy to George Kittle.
Then in the fourth quarter with the Vikings ahead 20-7, Warner jarred the ball loose from Aaron Jones at the 1-yard line at the end of an 18-yard run.
Playing in his 100th regular-season game, Kittle had seven catches for 76 yards to post the third-most receiving yards (6,390) by a tight end in NFL history at the 100-game mark. Rob Gronkowski (7,112) and Travis Kelce (6,762) were the only ones with more.
The Vikings set up their first field goal with a blocked punt by C.J. Ham, the ninth-year fullback and special teams stalwart. Theo Jackson scooped it up for a 37-yard return to the San Francisco 24.
49ers: S Talanoa Hufanga (knee) was held out for the second straight week.
Vikings: WR Jordan Addison (ankle) was inactive after getting injured in the game last week.
49ers: Visit the Los Angeles Rams next Sunday. The 49ers had a 10-game regular-season winning streak against their division rival, excluding the NFC championship game in 2021-22, that ended with a 21-20 loss to the Rams on Jan. 7, 2024. That was Darnold's only start for the 49ers.
Vikings: Host Houston on Sept. 22. They're 5-0 all-time against the Texans, who will bring former Vikings stars WR Stefon Diggs and DE Danielle Hunter with them.