Want the latest Bay Area sports news delivered to your inbox? Sign up here to receive regular email newsletters, including “The Dime.”
Imagine if the Arizona Cardinals had missed Kyler Murray, Trey McBride, Marvin Harrison Jr., Michael Wilson, Josh Sweat, and Budda Baker on Sunday.
The 49ers — down Brock Purdy, George Kittle, Brandon Aiyuk, Jauan Jennings, Nick Bosa, and Malik Mustapha — worked through that injury equivalent to win, 16-15.
Impressive stuff. In fact, it’s probably fair to say that the teams joining the 49ers in the desirable upper-right quadrant of the graph below wouldn’t be there if they had similar injury issues to the 49ers this September.
The 3-0 success so far is a testament to coach Kyle Shanahan, his staff, and the team’s offseason roster renovation.
But the work never stops. A daunting new task has surfaced: The 49ers must absorb the loss of star edge rusher Nick Bosa, who tore his ACL Sunday and is done for the season.
The 49ers must be even more relieved now that they traded for edge rusher Bryce Huff, who’s among Pro Football Focus’ top five at his position. But that’s only the beginning of the Bosa replacement effort, which will call for increased contributions from all corners of the roster.
With that in mind, here are snap counts and grades from Sunday’s win.
Quarterback: Mac Jones (65 snaps)
Game grade: B-
The 49ers went 0-2 over the games Purdy missed in 2024. They’re 2-0 in the games he has missed in 2025. Jones is a huge part of the difference.
That’s about as solid a performance as a team can expect from its backup quarterback. And now, it seems, Purdy is on track to return this week against a Jacksonville Jaguars defense that ranks No. 2, behind the Minnesota Vikings, in EPA/play.
Running back/fullback: Christian McCaffrey (59), Brian Robinson Jr. (6), Kyle Juszczyk (22), Jake Tonges (1)
Game grade: A
McCaffrey leads the NFL with 77 touches. He’s also putting up top wide receiver numbers … as a running back. He’s third in the NFL in catches (25) and targets (32). He’s on pace for 181 targets, 142 catches, and more than 1,200 receiving yards. He’s the first player with at least 50 runs and 25 catches through three weeks since Thurman Thomas of the Buffalo Bills eclipsed those marks during his 1991 MVP season.
Would the 49ers like to ease McCaffrey’s workload? Of course. But they’ve needed this to win while their weaponry has been depleted. Good news: Receivers Demarcus Robinson and Jauan Jennings may be back this week.
Wide receiver: Ricky Pearsall (63), Kendrick Bourne (47), Skyy Moore (34), Marquez Valdes-Scantling (17), Malik Turner (1)
Game grade: A
Consider that Pearsall is significantly outperforming Arizona’s Harrison, a top-five pick in the 2024 NFL Draft. Pearsall is on pace for nearly 1,700 receiving yards and — thanks to the 49ers’ dearth of available top-line weapons — is doing so in especially crowded quarters.
Moore deserves recognition for his relatively large 34-snap load Sunday. He even made a big catch on the 49ers’ game-winning drive, necessary because the Arizona defense had focused so much attention on Pearsall by that point. (Remember that Jones had force-fed him on his interception the drive prior.)
Even after Robinson, Jennings, and Aiyuk return, Moore will likely stick around as the 49ers’ return specialist. And then Shanahan can use him as a gadget weapon on offense. Think Ray-Ray McCloud.
Tight end: Tonges (44), Luke Farrell (30), Brayden Willis (1)
Game grade: A
Tonges is developing a penchant for delivering in big moments. One of his two catches came on the game-winning drive, when Jones absolutely had to spread the ball around to keep Arizona’s defense honest. You might have also noticed that Tonges took one snap at fullback and laid a nice block ahead of McCaffrey. That adaptability is worth its weight in gold in this offense.
Offensive line: Trent Williams (65), Connor Colby (65), Jake Brendel (65), Dominick Puni (65), Colton McKivitz (65)
Game grade: D
The 49ers, coming off an excellent game in pass protection in New Orleans, struggled up front. Colby, a rookie playing hurt in his first start (he injured his groin Thursday), allowed five pressures. Cardinals edge rusher Josh Sweat beat him and McKivitz on key rushes. Veteran defensive tackle Calais Campbell blew by Puni to notch a safety, although officials called the play incorrectly. (Puni’s hold began outside the end zone.)
“I thought that there was definitely a number of plays in the game that we needed to hold up longer,” Shanahan said. “The backed-up one [with Puni] especially, it happened too fast, and No. 1 wasn’t open, and when that happens that fast, that is an issue. There were times that we did protect well in the game, but it definitely came up a few too many times, especially in some tough spots. They had some challenges there on the inside, but ones that I think we can do better with.”
Defensive line: Nick Bosa (14), Mykel Williams (43), Bryce Huff (36), Jordan Elliott (32), Kalia Davis (31), Yetur Gross-Matos (22), Sam Okuayinonu (42), Alfred Collins (31), CJ West (14)
Game grade: A
Maybe we can plan on sharing this graphic every week to illustrate Huff’s profoundly positive impact.
The largest uptick in playing time due to Bosa’s absence, at least in the near term, will belong to Okuayinonu. He played 42 snaps Sunday, up from 15 and 28 in Weeks 1 and 2, respectively.
Linebackers: Fred Warner (66), Dee Winters (66), Luke Gifford (12)
Game grade: A
Winters delivered a massive hit on the very first play after Jones’ interception. That’s flying under the radar thanks to the wild finishing sequence that surrounded it, but the 49ers badly needed that thump to stop the bleeding and give themselves a chance in the endgame.
Warner, “The Predator,” remains sublime. By Pro Football Focus scores, he’s the highest-graded player in the NFL.
Safeties: Jason Pinnock (66), Marques Sigle (66), Ji’Ayir Brown (25)
Game grade: A-
Brown’s role as the “big nickel” grew from seven to 25 snaps. The 49ers also reinserted Gifford for 12 snaps after the third linebacker didn’t play on defense against the Saints. The takeaway: Defensive coordinator Robert Saleh is developing increasing adaptability within this defense.
While Arizona’s heavy tight end usage likely encouraged the 49ers to increase Brown’s workload, it’s worth noting that machinations on the back end — if properly deployed — are one way to pick up some of the slack created by Bosa’s absence.
Cornerbacks: Deommodore Lenoir (64), Renardo Green (57), Upton Stout (32), Darrell Luter Jr. (7)
Game grade: B
Speaking of sub-package machinations, Stout — we can call his position “small nickel” — is growing in value on a weekly basis. We already knew that Saleh sees Stout as a valuable blitzer, and he’ll probably do even more of that with Bosa out. But Stout is growing as a cover man, as illustrated by his game-saving pass breakup against Arizona receiver Zay Jones.
Special teams grade: B
Eddy Piñeiro … dinero.
The 49ers weren’t perfect in kick coverage early, and Moore fair-caught a punt dangerously close to his own goal line, which preceded the safety. So we can’t give the special teams unit an A, even though it scored +2.1 expected points — more than the difference of this game.
But the overall performance was undoubtedly good, and Shanahan is happy to have a reliable kicker.