GLENDALE, AZ - With first place in the NFC West on the line, the San Francisco 49ers and Arizona Cardinals delivered one of the wildest fourth quarters of the entire season. What began as a steady back-and-forth matchup between two playoff hopefuls turned into a chaotic, turnover-filled, momentum-swinging thriller that stretched to the final seconds. When it was over, Jeff Jarin's 49ers survived a furious Cardinals push and a cascade of scoring swings to escape State Farm Stadium with a dramatic 35-31 win, leapfrogging Jonathan Gannon's team in the division race.
A tense start with early punches from both sides
San Francisco wasted no time establishing rhythm. Brock Purdy opened the scoring with a five-yard strike to George Kittle in the first quarter, capping a smooth drive built on quick timing throws and Christian McCaffrey's early efficiency. Moments later, the 49ers grabbed a second touchdown when Nick Bosa scooped up a loose ball and rumbled 48 yards for a defensive score, shocking the crowd and pushing the game to 14-0.
Arizona answered in the second quarter. Kyler Murray found rookie running back Trey Benson for a six-yard touchdown to cut the deficit to seven. Just minutes later, Mack Wilson Sr. jumped a Purdy pass and returned it 35 yards for a pick-six, suddenly evening the score at 14-14 and igniting the Cardinals' sideline.
San Francisco responded before halftime with a beautifully designed play that freed McCaffrey down the sideline for a 24-yard touchdown reception, helping the 49ers take a 21-14 lead into the break.
Cardinals surge behind explosive plays
Arizona opened the third quarter with thunder. Murray found Marvin Harrison Jr. on a perfectly placed 49-yard bomb, tying the game once again. Just seconds later, disaster struck for San Francisco: another fumble on the ensuing kickoff turned into a defensive touchdown for Jordan Burch, flipping the scoreboard and giving the Cardinals their first lead of the afternoon at 28-21.
State Farm Stadium erupted. With the ground game humming behind James Conner and Benson and the defense forcing miscues, Arizona appeared to seize full control. But the 49ers hung around, absorbing the momentum swing and waiting for their moment.
The fourth quarter turns into pure chaos
Nothing about the fourth quarter was normal-except that both teams played it like their seasons depended on it.
Arizona started the frame with a Matt Prater 22-yard field goal to extend the lead to 31-21. But Purdy, who had thrown multiple interceptions and struggled through stretches of the game, responded with one of his best drives of the season. Facing pressure and long downs, he connected on a deep 48-yard touchdown to Skyy Moore, slicing the deficit to 31-28 with eight minutes remaining.
On the very next Cardinals possession, San Francisco's defense delivered the most important sequence of the afternoon. Ji'Ayir Brown forced a fumble on a Murray scramble and returned it 21 yards for a touchdown, flipping the game yet again and giving the 49ers a 35-31 advantage. In a span of just minutes, the 49ers went from staring at a double-digit deficit to reclaiming the lead.
Arizona pushed deep into San Francisco territory on the final drive, with Murray delivering clutch throws to Greg Dortch, Michael Wilson, and Harrison Jr. The Cardinals moved the ball inside the 10-yard line with under a minute to play. But the 49ers stiffened, forcing a fourth-and-goal decision. Gannon opted for the field goal earlier in the quarter, but here, with the game on the line, the Cardinals faced too many long-yardage situations. A sack and incompletions derailed the drive, and the comeback fell short. Prater added one last chip-shot field goal with seconds remaining, but Arizona never touched the ball again.
San Francisco knelt out the remaining seconds, sealing a statement win in a game that swung violently in all directions.
Stars shine, mistakes loom large
For the 49ers, McCaffrey was the heartbeat all afternoon, mixing tough inside runs with explosive receiving plays. Kittle posted multiple chain-moving receptions, and Moore delivered the biggest offensive play of the game with his fourth-quarter touchdown.
Defensively, Bosa, Brown, and the entire front seven made game-changing plays. The 49ers recorded two defensive scores and forced repeated backfield pressure against Murray.
For Arizona, Murray played with remarkable poise despite heavy heat, accounting for explosive gains through the air and showcasing urgency in the final minutes. Harrison Jr. continued to look like one of the league's next elite receivers, and Benson provided strong complementary production.
But the turnovers-three lost fumbles and the pick-six-ultimately told the story. The Cardinals outgained San Francisco in total yardage and repeatedly moved the ball, but the miscues proved fatal in a tight divisional battle.
Up Next
The Cardinals return home for a crucial matchup in week 12 as they host the Jacksonville Jaguars, a game they desperately need to stabilize their playoff footing after this tough divisional loss. Meanwhile, the 49ers look to build on their new division lead as they host the Carolina Panthers in their own week 12 showdown.
Stats
Passing
San Francisco 49ers
Player |
qbr |
com/att |
pct |
yds |
lng |
td |
int |
sck |
|---|---|---|---|---|---|---|---|---|
| B.Purdy #13 | 87.9 | 14 / 30 | 46.7 | 198 | 48 | 3 | 1 | 0 |
| TEAM | - | 14 / 30 | 46.7 | 198 | 48 | 3 | 1 | 0 |
Rushing
San Francisco 49ers
Player |
att |
yds |
lng |
td |
avg |
big |
yac |
|---|---|---|---|---|---|---|---|
| C.McCaffrey #23 | 19 | 91 | 18 | 0 | 4.8 | 0 | 32 |
| B.Purdy #13 | 3 | 19 | 12 | 0 | 6.3 | 0 | 2 |
| B.Robinson Jr #3 | 3 | 5 | 8 | 0 | 1.7 | 0 | 3 |
| I.Guerendo #31 | 0 | 0 | 0 | 0 | 0.0 | 0 | 0 |
| J.James #29 | 0 | 0 | 0 | 0 | 0.0 | 0 | 0 |
| TEAM | 25 | 115 | 18 | 0 | 4.6 | 0 | 37 |
Receiving
San Francisco 49ers
Player |
rec |
yds |
avg |
td |
yac |
lng |
drop |
|---|---|---|---|---|---|---|---|
| S.Moore #9 | 4 | 105 | 26.3 | 1 | 46 | 48 | 0 |
| G.Kittle #85 | 6 | 66 | 11.0 | 1 | 30 | 21 | 0 |
| C.McCaffrey #23 | 3 | 16 | 5.3 | 1 | 31 | 24 | 1 |
| B.Robinson Jr #3 | 1 | 11 | 11.0 | 0 | 14 | 11 | 0 |
| L.Farrell #89 | 0 | 0 | 0.0 | 0 | 0 | 0 | 2 |
| TEAM | 14 | 198 | 14.1 | 3 | 121 | 48 | 3 |
Defense
San Francisco 49ers
Player |
tckl |
sck |
pdef |
int |
int yds |
td |
ff |
ffr |
|---|---|---|---|---|---|---|---|---|
| N.Bosa #97 | 2 | 3.0 | 0 | 0 | 0 | 1 | 1 | 1 |
| D.Luter Jr #28 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| U.Stout #20 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| J.Pinnock #25 | 6 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| R.Green #0 | 2 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| F.Warner #54 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| M.Williams #98 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 1 |
| Y.Gross-Matos #94 | 2 | 0.0 | 0 | 0 | 0 | 0 | 1 | 0 |
| D.Winters #53 | 1 | 0.0 | 0 | 0 | 0 | 0 | 1 | 0 |
| B.Huff #47 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| N.Martin #45 | 2 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| J.Jefferson #96 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| D.Lenoir #2 | 2 | 0.0 | 2 | 0 | 0 | 0 | 0 | 0 |
| J.Peppers #34 | 5 | 0.0 | 0 | 1 | 0 | 0 | 0 | 0 |
| TEAM | 28 | 3.0 | 2 | 1 | 0 | 1 | 3 | 2 |
Kicking
San Francisco 49ers
Player |
fg |
fg pct |
lng |
xp |
xp pct |
50+ |
50+ pct |
|---|---|---|---|---|---|---|---|
| T.Morstead #7 | 0 / 0 | 0.0 | 0 | 0 / 0 | 0.0 | 0 / 0 | 0.0 |
| J.Moody #4 | 0 / 1 | 0.0 | 0 | 5 / 5 | 100.0 | 0 / 0 | 0.0 |
| TEAM | 0 / 1 | 0.0 | 0 | 5 / 5 | 100.0 | 0 / 0 | 0.0 |
Punting
San Francisco 49ers
Player |
punts |
yds |
avg |
tb |
in20 |
lng |
blk |
|---|---|---|---|---|---|---|---|
| T.Morstead #7 | 3 | 120 | 39.0 | 0 | 1 | 44 | 0 |
| TEAM | 3 | 120 | 40.0 | 0 | 1 | 44 | 0 |



