The 49ers left State Farm Stadium with a seemingly lopsided 41-22 win over the Arizona Cardinals on Sunday, but their PFF grades show how much the home team was able to move the ball.
The most obvious assist for the 49ers was the Cardinals’ franchise record-setting 17 penalties for 130 yards, which negated a 200-plus-yard differential between the two teams. The 49ers moved the ball 281 yards, while the Cardinals racked up 488 yards of offense.
Defensive coordinator Robert Saleh put together a successful plan to stop the Cardinals’ ground game and allow only 36 rushing yards, but Arizona quarterback Jacoby Brissett completed a whopping 47 of his 57 total pass attempts for 452 yards with two touchdowns, two interceptions and a 96.8 passer rating.
San Francisco coach Kyle Shanahan told reporters Monday that he was pleased with the defense’s performance, especially considering defensive end Robert Beal left the game after only seven defensive snaps, and linebacker Tatum Bethune missed nearly three quarters of the contest with what was determined after the game to be a high ankle sprain.
“I was really proud of our defense,” Shanahan said via conference call. “I think we played a lot of soft zone, wanted to make them work for it to get down the field. I thought our guys grinded. I thought we kind of wore out big time at the end, but we were playing pretty soft coverages and just trying not to let them get back in the game.
“The yardage does suck, but sometimes that’s how games play out and with the turnovers they got and how they played throughout that game, I thought the defense was really, really good.”
Coverage
Dee Winters – allowed completions on all 11 targets for 87 yards
Upton Stout – allowed six completions on seven targets for 80 yards
Deommodore Lenoir – allowed four catches on seven targets for 63 yards
Nick Martin – allowed catches on all four targets for 49 yards
Malik Mustapha – allowed catches on all three targets for 45 yards
Jason Pinnock – allowed catches on all five targets for 43 yards and a touchdown
Curtis Robinson – allowed five catches on seven targets for 28 yards and a touchdown
Renardo Green – allowed three catches on four targets for 21 yards
Chase Lucas – allowed catches on both targets for 17 yards
Ji’Ayir Brown – allowed two catches on three targets for 12 yards
Tatum Bethune – allowed one catch for 5 yards
Darrell Luter – allowed one catch for 2 yards
Stout received the highest grade of his career (72.1). The rookie nickelback allowed six catches on seven targets for 80 yards, but he recorded seven total tackles, two stops, and a forced fumble.
Lenoir earned the second-highest overall grade of 86.7 and a 90.4 coverage grade, allowing four catches on seven targets for 63 yards with an interception and a pass breakup.
Missed tackles – 10 total
Dee Winters – 2
Chase Lucas – 2
Malik Mustapha – 1
CJ West – 1
Marques Sigle – 1
Upton Stout – 1
Darrell Luter – 1
Jason Pinnock – 1
Curtis Robinson, who came in for Bethune after he left the game with his ankle injury in the second quarter, filled in admirably, registering 11 total tackles, none missed, and four stops.
The defensive line was without Beal early in the game, which lead to higher snap counts for the remaining members of the group that was only able to manage 13 quarterback pressures over 79 offensive plays.
The 49ers’ defense currently ranks 32nd in sack rate and 31st in pressure rate, and that is only because the three weeks that Nick Bosa was active has kept them from being in last place. Without Bosa’s statistics, the 49ers are in 32nd place by a large margin.
13 total quarterback pressures – no sacks
Kalia Davis – one hit, three hurries
Bryce Huff – two hits, one hurry
Sam Okuayinonu – one hit, one hurry
Keion White – two hurries
Alfred Collins – one hurry
Jordan Elliott – one hurry
Offense
The offense played well with the returns of both quarterback Brock Purdy and wide receiver Ricky Pearsall to the field. While Pearsall only caught one of his targets for zero yards, he added a threat that stretched the field for the offense and opened up underneath routes for Christian McCaffrey.
Brock Purdy – 61.9
Purdy was very efficient on plays of 10 yards or more downfield, completing six of his eight passes for 99 yards with two touchdowns. The offensive line kept the signal-caller upright, only allowing seven pressures and giving Purdy an average of 3.14 seconds to throw.
Purdy also was effective when blitzed, completing eight of his 10 attempts for 74 yards with two touchdowns under pressure.
George Kittle – 87.6
Kittle received the top grade on offense, catching all six of his targets. Kittle has caught his last 23 targets in a row and has a 93.1-percent catch rate on the 2025 NFL season. Five of his six catches on Sunday resulted in either a first down or touchdown.
Christian McCaffrey – 86.8
McCaffrey averaged a season high of 4.0 yards per carry after contact. The All-Pro running back had three runs of 10 yards or more, including his first 20-yard run of the season.
Offensive line
LT Trent Williams – no pressures
LG Ben Bartch – one hurry
LG Spencer Burford – one hurry
C Jake Brendel – two hurries
RG Dominick Puni – one hurry
RT Colton McKivitz – one hit, one hurry
49ers personnel packages:
21 – 51.9 percent
12 – 25.0 percent
11 – 21.1 percent (8 of the 11 snaps in 11 were on third down)
22 – 1.9 percent