Two big strikes built the cushion
San Francisco did not need much volume to create an early edge. The 49ers scored first on one of the day’s strangest and most damaging plays, with Brock Purdy completing a short pass to Mike Evans before the ball was lateralled to Deebo Samuel Sr. for an 80-yard touchdown at 8:26 of the first quarter.
That set the tone for a highly efficient afternoon from Purdy, who finished 15-of-27 for 297 yards and four touchdowns without a sack or interception. His second scoring throw came almost immediately after the second quarter began, a 23-yard touchdown to Evans that pushed the 49ers ahead 14-0 with 14:55 left in the half.
Arizona steadied itself with Chad Ryland field goals from 26 and 41 yards, but San Francisco still carried momentum into the break when Eddy Pineiro drilled a 57-yarder on the final play of the half. That kick sent the 49ers to halftime up 17-6, a useful margin in a game that never stayed quiet for long.
Arizona controlled the ball and kept coming
The Cardinals spent much of the afternoon doing the slow work required to stay alive. Jacoby Brissett completed 38 of 52 passes for 280 yards and two touchdowns, and Arizona owned possession for 38:44 while running 81 plays. Michael Wilson was his busiest target, catching 11 passes for 89 yards and a touchdown, while Trey McBride added nine receptions for 75 yards.
San Francisco widened the gap early in the third quarter when Christian McCaffrey finished a drive with a 1-yard touchdown run at 11:07, stretching the lead to 23-6 despite the missed extra point. McCaffrey’s rushing line — 75 yards on 15 carries — was part of a strong 140-yard team effort on the ground.
Arizona answered before the quarter ended. Wilson scored on a 5-yard pass from Brissett with 3:02 left in the third, and the Cardinals opened the fourth with another short touchdown, this time a 1-yard pass to Jeremiyah Love at 13:06. Suddenly, a game that had tilted toward San Francisco was back to one score at 23-20.
The pressure returned late. After San Francisco scored again, Brissett pulled Arizona back within two points on a 1-yard rushing touchdown with 2:51 to play. Love’s 90 rushing yards on 21 attempts helped keep the Cardinals balanced enough to threaten all afternoon, even if their drives often demanded patience rather than chunk gains.
Kittle delivered the finish
The decisive difference was Kittle. With 8:42 left, he caught a 10-yard touchdown from Purdy to restore breathing room at 29-20, though another failed extra point left the door open. Arizona walked through that opening with Brissett’s late rushing score, cutting it to 29-27 and setting up a frantic finish.
Kittle closed it himself. With 1:31 remaining, Purdy found the tight end again, this time for a 20-yard touchdown that pushed the 49ers to 36-27 after the extra point. Arizona answered only with Ryland’s 49-yard field goal at 0:34, leaving the Cardinals six points short when time expired.
Kittle’s final line — six catches, 82 yards and two touchdowns on seven targets — captured how direct San Francisco could be whenever it needed a play. Jordan Watkins also chipped in 60 receiving yards on two catches, giving the 49ers another explosive outlet in a passing game that averaged 11.0 yards per attempt.
Our take: Explosive efficiency beat Arizona’s volume
This result is a useful reminder that possession time and play count do not always decide an NFL game. Arizona held the ball for more than 17 minutes longer, posted more first downs and avoided turnovers, yet San Francisco still produced 437 yards on only 50 plays. The 49ers averaged 8.7 yards per snap; the Cardinals averaged 4.5.
That gap explains most of the afternoon. San Francisco did not waste many chances: two trips to the red zone produced two touchdowns, Purdy was never sacked, and the run game averaged 6.1 yards per carry. Arizona moved the chains consistently, converting 9 of 18 third downs and 2 of 2 fourth downs, but too many of those drives ended in field goals or required too many snaps to cover modest yardage.
If there is a concern in a winning dressing room, it starts with game management details rather than star power. The 49ers lost a fumble and left two points behind on missed extra points, which helped keep a controlled game unsettled into the final minute. For Arizona, the path forward is visible in the numbers: the offence generated 365 yards and protected the ball, but a defence that allowed nearly nine yards per play left very little margin for all that possession to matter.
Scoring moments
- Period 1 · 8:26
Brock Purdy complete pass to Mike Evans for 2 yards, lateral to Deebo Samuel for 80 yards (Eddy Pineiro Kick)
- Period 2 · 14:55
Mike Evans 23 Yd pass from Brock Purdy (Eddy Pineiro Kick)
- Period 2 · 3:03
Chad Ryland 26 Yd Field Goal
- Period 2 · 0:23
Chad Ryland 41 Yd Field Goal
- Period 2 · 0:00
Eddy Pineiro 57 Yd Field Goal
- Period 3 · 11:07
Christian McCaffrey 1 Yd Rush (Eddy Pineiro PAT Failed)
- Period 3 · 3:02
Michael Wilson 5 Yd pass from Jacoby Brissett (Chad Ryland Kick)
- Period 4 · 13:06
Jeremiyah Love 1 Yd pass from Jacoby Brissett (Chad Ryland Kick)
- Period 4 · 8:42
George Kittle 10 Yd pass from Brock Purdy (Eddy Pineiro PAT Failed)
- Period 4 · 2:51
Jacoby Brissett 1 Yd Rush (Chad Ryland Kick)
- Period 4 · 1:31
George Kittle 20 Yd pass from Brock Purdy (Eddy Pineiro Kick)
- Period 4 · 0:34
Chad Ryland 49 Yd Field Goal
Arizona Cardinals — Passing
| Player | C/ATT | YDS | AVG | TD | INT | SACKS | QBR | RTG |
|---|---|---|---|---|---|---|---|---|
| Jacoby Brissett | 38/52 | 280 | 5.4 | 2 | 0 | 2-8 | 78.1 | 98.2 |
Arizona Cardinals — Rushing
| Player | CAR | YDS | AVG | TD | LONG |
|---|---|---|---|---|---|
| Jeremiyah Love | 21 | 90 | 4.3 | 0 | 8 |
| Jacoby Brissett | 4 | 4 | 1.0 | 1 | 2 |
| Tyler Allgeier | 2 | -1 | -0.5 | 0 | 2 |
Arizona Cardinals — Receiving
| Player | REC | YDS | AVG | TD | LONG | TGTS |
|---|---|---|---|---|---|---|
| Michael Wilson | 11 | 89 | 8.1 | 1 | 18 | 17 |
| Trey McBride | 9 | 75 | 8.3 | 0 | 18 | 11 |
| Marvin Harrison Jr. | 3 | 40 | 13.3 | 0 | 19 | 5 |
| Kendrick Bourne | 2 | 22 | 11.0 | 0 | 14 | 3 |
| Elijah Higgins | 3 | 20 | 6.7 | 0 | 9 | 3 |
| Jeremiyah Love | 5 | 19 | 3.8 | 1 | 8 | 5 |
| Tyler Allgeier | 4 | 10 | 2.5 | 0 | 5 | 4 |
| Hunter Long | 1 | 5 | 5.0 | 0 | 5 | 1 |
| Jalen Brooks | 0 | 0 | 0.0 | 0 | 0 | 1 |
Arizona Cardinals — Fumbles
| Player | FUM | LOST | REC |
|---|---|---|---|
| Simi Fehoko | 0 | 0 | 1 |
Arizona Cardinals — Defensive
| Player | TOT | SOLO | SACKS | TFL | PD | QB HTS | TD |
|---|---|---|---|---|---|---|---|
| Andrew Wingard | 10 | 1 | 0 | 0 | 0 | 0 | 0 |
| Jack Gibbens | 8 | 4 | 0 | 1 | 0 | 1 | 0 |
| Mack Wilson Sr. | 6 | 2 | 0 | 0 | 0 | 0 | 0 |
| Max Melton | 4 | 3 | 0 | 0 | 1 | 0 | 0 |
| Budda Baker | 4 | 1 | 0 | 0 | 0 | 0 | 0 |
| Zaven Collins | 3 | 3 | 0 | 0 | 2 | 0 | 0 |
| Eku Leota | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| Denzel Burke | 2 | 2 | 0 | 0 | 2 | 0 | 0 |
| Baron Browning | 2 | 1 | 0 | 1 | 0 | 1 | 0 |
| Elijah Higgins | 2 | 1 | 0 | 0 | 0 | 0 | 0 |
| Wydett Williams Jr. | 2 | 1 | 0 | 0 | 0 | 0 | 0 |
| Cody Simon | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| Dante Stills | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| Kalen King | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| Garrett Williams | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| Darius Robinson | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| Walter Nolen III | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| Karson Sharar | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
Arizona Cardinals — KickReturns
| Player | NO | YDS | AVG | LONG | TD |
|---|---|---|---|---|---|
| Jalen Brooks | 5 | 128 | 25.6 | 28 | 0 |
| Devin Duvernay | 1 | 29 | 29.0 | 29 | 0 |
Arizona Cardinals — PuntReturns
| Player | NO | YDS | AVG | LONG | TD |
|---|---|---|---|---|---|
| Devin Duvernay | 2 | 20 | 10.0 | 10 | 0 |
Arizona Cardinals — Kicking
| Player | FG | PCT | LONG | XP | PTS |
|---|---|---|---|---|---|
| Chad Ryland | 3/3 | 100.0 | 49 | 3/3 | 12 |
Arizona Cardinals — Punting
| Player | NO | YDS | AVG | TB | In 20 | LONG |
|---|---|---|---|---|---|---|
| Blake Gillikin | 4 | 201 | 50.3 | 1 | 2 | 63 |
San Francisco 49ers — Passing
| Player | C/ATT | YDS | AVG | TD | INT | SACKS | QBR | RTG |
|---|---|---|---|---|---|---|---|---|
| Brock Purdy | 15/27 | 297 | 11.0 | 4 | 0 | 0-0 | 86.8 | 133.8 |
San Francisco 49ers — Rushing
| Player | CAR | YDS | AVG | TD | LONG |
|---|---|---|---|---|---|
| Christian McCaffrey | 15 | 75 | 5.0 | 1 | 14 |
| Brock Purdy | 2 | 34 | 17.0 | 0 | 35 |
| Kaelon Black | 4 | 17 | 4.3 | 0 | 9 |
| Deebo Samuel Sr. | 2 | 14 | 7.0 | 0 | 11 |
San Francisco 49ers — Receiving
| Player | REC | YDS | AVG | TD | LONG | TGTS |
|---|---|---|---|---|---|---|
| George Kittle | 6 | 82 | 13.7 | 2 | 20 | 7 |
| Deebo Samuel Sr. | 0 | 80 | 0.0 | 1 | 80 | 0 |
| Jordan Watkins | 2 | 60 | 30.0 | 0 | 34 | 2 |
| Christian McCaffrey | 4 | 41 | 10.3 | 0 | 13 | 5 |
| Mike Evans | 3 | 34 | 11.3 | 1 | 23 | 6 |
| Kyle Juszczyk | 0 | 0 | 0.0 | 0 | 0 | 2 |
| Luke Farrell | 0 | 0 | 0.0 | 0 | 0 | 1 |
| Jacob Cowing | 0 | 0 | 0.0 | 0 | 0 | 2 |
| Kaelon Black | 0 | 0 | 0.0 | 0 | 0 | 1 |
San Francisco 49ers — Fumbles
| Player | FUM | LOST | REC |
|---|---|---|---|
| Siran Neal | 1 | 1 | 0 |
San Francisco 49ers — Defensive
| Player | TOT | SOLO | SACKS | TFL | PD | QB HTS | TD |
|---|---|---|---|---|---|---|---|
| Fred Warner | 17 | 8 | 0 | 1 | 0 | 1 | 0 |
| Renardo Green | 13 | 7 | 0 | 0 | 1 | 0 | 0 |
| Dre Greenlaw | 8 | 3 | 0 | 0 | 0 | 0 | 0 |
| Ji'Ayir Brown | 6 | 2 | 0 | 0 | 1 | 0 | 0 |
| Jack Jones | 5 | 3 | 0 | 0 | 0 | 0 | 0 |
| Deommodore Lenoir | 5 | 3 | 0 | 0 | 1 | 0 | 0 |
| Garret Wallow | 4 | 3 | 0 | 0 | 0 | 0 | 0 |
| Marques Sigle | 4 | 2 | 0 | 0 | 0 | 0 | 0 |
| Malik Mustapha | 4 | 1 | 0 | 0 | 0 | 0 | 0 |
| Khalid Kareem | 3 | 3 | 0 | 0 | 0 | 0 | 0 |
| Gracen Halton | 3 | 2 | 0 | 1 | 1 | 0 | 0 |
| Keion White | 3 | 1 | 1 | 1 | 0 | 1 | 0 |
| Sebastian Valdez | 3 | 1 | 0 | 0 | 0 | 0 | 0 |
| KhaDarel Hodge | 2 | 2 | 0 | 0 | 0 | 0 | 0 |
| Siran Neal | 2 | 2 | 0 | 0 | 0 | 0 | 0 |
| Brayden Willis | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| Upton Stout | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| Ogbo Okoronkwo | 1 | 1 | 1 | 0 | 0 | 2 | 0 |
| Luke Gifford | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
| Jaden Dugger | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
| Ashtyn Davis | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| Kevin Givens | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| Osa Odighizuwa | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
| Luke Farrell | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| Naquan Jones | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
San Francisco 49ers — KickReturns
| Player | NO | YDS | AVG | LONG | TD |
|---|---|---|---|---|---|
| Deebo Samuel Sr. | 4 | 79 | 19.8 | 28 | 0 |
San Francisco 49ers — PuntReturns
| Player | NO | YDS | AVG | LONG | TD |
|---|---|---|---|---|---|
| Jacob Cowing | 1 | 7 | 7.0 | 7 | 0 |
| Siran Neal | 1 | 0 | 0.0 | 0 | 0 |
San Francisco 49ers — Kicking
| Player | FG | PCT | LONG | XP | PTS |
|---|---|---|---|---|---|
| Eddy Pineiro | 1/1 | 100.0 | 57 | 3/5 | 6 |
San Francisco 49ers — Punting
| Player | NO | YDS | AVG | TB | In 20 | LONG |
|---|---|---|---|---|---|---|
| Corliss Waitman | 3 | 145 | 48.3 | 0 | 1 | 57 |
Arizona Cardinals — Team statistics
| 1st Downs | 27 |
|---|---|
| Passing 1st downs | 18 |
| Rushing 1st downs | 6 |
| 1st downs from penalties | 3 |
| 3rd down efficiency | 9-18 |
| 4th down efficiency | 2-2 |
| Total Plays | 81 |
| Total Yards | 365 |
| Yards per Play | 4.5 |
| Total Drives | 10 |
| Passing | 272 |
| Comp/Att | 38/52 |
| Yards per pass | 5.0 |
| Interceptions thrown | 0 |
| Sacks-Yards Lost | 2-8 |
| Rushing | 93 |
| Rushing Attempts | 27 |
| Yards per rush | 3.4 |
| Red Zone (Made-Att) | 3-5 |
| Penalties | 10-86 |
| Turnovers | 0 |
| Fumbles lost | 0 |
| Interceptions thrown | 0 |
| Defensive / Special Teams TDs | 0 |
| Possession | 38:44 |
San Francisco 49ers — Team statistics
| 1st Downs | 23 |
|---|---|
| Passing 1st downs | 14 |
| Rushing 1st downs | 7 |
| 1st downs from penalties | 2 |
| 3rd down efficiency | 5-8 |
| 4th down efficiency | 0-0 |
| Total Plays | 50 |
| Total Yards | 437 |
| Yards per Play | 8.7 |
| Total Drives | 10 |
| Passing | 297 |
| Comp/Att | 15/27 |
| Yards per pass | 11.0 |
| Interceptions thrown | 0 |
| Sacks-Yards Lost | 0-0 |
| Rushing | 140 |
| Rushing Attempts | 23 |
| Yards per rush | 6.1 |
| Red Zone (Made-Att) | 2-2 |
| Penalties | 7-69 |
| Turnovers | 1 |
| Fumbles lost | 1 |
| Interceptions thrown | 0 |
| Defensive / Special Teams TDs | 0 |
| Possession | 21:16 |
← GAME CENTRE