Brock Purdy throws 3 TDs, McCaffrey scores 3 TDs

GLENDALE, Ariz. – Skyy Moore nearly upstaged Brock Purdy’s triumphant comeback and Arizona homecoming. In 13 stunning seconds, Moore returned Sunday’s opening kickoff 98 yards before being tackled a yard shy of the goal line.
“It came down to who was faster and I feel I ran out of gas,” Moore said. “Next time I’m going to get one less scoop of ice cream on Saturday and we’ll get that to the crib.”
Enter: Purdy.
Purdy, after missing the past six games with an injured big toe on his right foot, promptly handed the ball off to Christian McCaffrey for a 1-yard touchdown run, and the 49ers were on their way to a 41-22 rout of the host Cardinals.
Purdy threw three touchdown passes, but he certainly shared the scoring spotlight. McCaffrey scored three touchdowns (1-yard run, 9-yard catch, 4-yard run), George Kittle had two touchdown receptions and, before leaving with a hamstring injury, kicker Eddy Pineiro made three field goals to improve to 22-for-22 on the season.
San Francisco 49ers’ Skyy Moore (9) returns a kickoff during the first half of an NFL football game against the Arizona Cardinals in Glendale, Ariz., Sunday, Nov. 16, 2025. (AP Photo/Ross D. Franklin)
Less than five minutes into this NFC West meeting, Purdy threw a 30-yard touchdown dime to Kittle for a 13-0 lead and, as has been the case all season long, the 49ers (7-4) were destined to avoid a second straight defeat.
“To hit that one, it was like, ‘Yeah, we’re playing. We’re in an NFL game.’ Putting a good throw on George and he completes it, it just felt good for my confidence,” Purdy said of the moment he felt he was back.
The 49ers’ defense yielded an NFL-record 47 completions to Cardinals quarterback Jacoby Brissett (on 57 passes for 452 yards), but Malik Mustapha and Deommodore Lenoir nabbed interceptions and a third takeaway came when Upton Stout forced a fumble at the 1-yard line in the fourth quarter.
All in all, the 49ers showed no sympathy for the injury-depleted and penalty-prone Cardinals (3-7), who are playing without their top three offensive players — quarterback Kyler Murray, wide receiver Marvin Harrison and running back James Conner – as well as linebacker Mack Wilson.
Next up is the 49ers’ first Monday night game this season, against the Carolina Panthers (6-5) at Levi’s Stadium.
49ers quarterback Brock Purdy #13 looks for an open receiver during the game between the San Francisco 49ers and the Arizona Cardinals at State Farm Stadium on Nov. 16, 2025 in Glendale, Arizona. The 49ers defeated the Cardinals 41-22. ..(John Medina/Special to Bay Area News Group)
As lopsided as this game was from the outset, it wasn’t injury-free like their previous Sunday’s defeat to the Rams. Linebacker Tatum Bethune left with a second-quarter ankle injury that will require a Monday MRI and Pineiro sustained a right hamstring injury after an exhaustive day featuring three field goals (48, 47, 47 yards), two point-after kicks, and two point-after misses (one blocked).
Not only did the 49ers get off to their quickest lead ever under coach Kyle Shanahan (7-0 in 16 seconds; 13-0 in 5:09), but their most first-half points of the season staked them to a 25-10 halftime lead.
Purdy said it was “special” to come back in his native Arizona, but first and foremost wanted this “team dub.” He finished with 200 yards on 19-of-26 passes with no interceptions and just one sack.
“He was vintage Brock, and that’s a huge compliment,” McCaffrey said. “He was poised, made some great plays, made some huge third-down throws, kept us in the game, and he was smart the whole game.”
Purdy said he didn’t think about a toe injury he initially sustained in the season-opening win at Seattle and aggravated three weeks later.
Christian McCaffrey #23 of the San Francisco 49ers carries the ball against the Arizona Cardinals during the second quarter at State Farm Stadium on Nov. 16, 2025 in Glendale, Arizona. (Photo by Mike Christy/Getty Images)
Added McCaffrey: “To miss games like that is really hard, to come back in the middle of a year. I think people just watch and are like, ‘Oh, he had a good game, whatever.’ But to be out that long and to come in and do what he did today is extremely impressive.”
McCaffrey’s most impressive work may have come on the 49ers’ final scoring drive. He converted a third-and-15 catch at the 24-yard line, followed that with a season-long 20-yard run, then scored on a 4-yard burst. He finished with 81 rushing yards (13 carries) and 40 receiving yards (five catches).
Kittle’s six catches on six targets went for 67 yards, and his two scores gave him 50 career touchdowns; he joins Jerry Rice and Terrell Owens as the only 49ers with 50 touchdowns and 500 receptions.
Moore popped the cork on this onslaught with his return of the opening kickoff to the 1-yard line, where he got caught from behind by cornerback Kei’Trel Clark. That prevented the 49ers’ first touchdown on a kick return since Richie James in 2018, and the first to open a game since Allen Rossum’s 104-yard score in the 49ers’ 2008 loss here. Keying Moore’s lane up the middle were blocks by Jake Tonges and Luke Gifford.
McCaffrey then dashed in for a 1-yard touchdown run past the right side blocks of Dominick Puni and Colton McKivitz. It was his fifth rushing touchdown of the season, and his fifth receiving touchdown would come 15 minutes later on a 9-yard pass from Purdy for a 19-7 lead.
Keion White #56 and Sam Okuayinonu #91 of the San Francisco 49ers celebrate a fumble recovery against the Arizona Cardinals during the fourth quarter at State Farm Stadium on Nov. 16, 2025 in Glendale, Arizona. (Photo by Norm Hall/Getty Images)
After Purdy kept that second series alive with a third-down, 25-yard completion to Jauan Jennings, he dropped that 30-yard pass over Kittle’s shoulder near the front right pylon for a 13-0 lead; the point-after kick was blocked.
Then the 49ers’ defense reverted to last week’s six-touchdowns-allowed form: The Cardinals drove 72 yards in nine plays and five minutes, keyed by a 34-yard catch against Stout and capped by a 6-yard touchdown run from Zonovan Knight for a 13-7 ballgame.
Purdy did not seem hindered by the right big toe injury that sidelined him eight games overall this season. Even with a 19-point lead in the fourth quarter, he was still rolling out with his familiar mobility.
“I was pretty good going into the game. This is the reason I told Kyle, ‘It’s time. It’s ready. I feel great,’” Purdy said. “I didn’t want to think about it at all, and I didn’t. I just went and played quarterback how I’ve always played. It feels great now. On to the next one.”
Brock Purdy #13 and Christian McCaffrey #23 of the San Francisco 49ers celebrate a touchdown against the Arizona Cardinals during the second quarter at State Farm Stadium on Nov. 16, 2025 in Glendale, Arizona. (Photo by Mike Christy/Getty Images)
Purdy had a perfect 158.3 passer rating through the first quarter, and he pumped the lead to 19-7 with a 9-yard touchdown pass to McCaffrey, who found himself wide open thanks to Kittle’s open-field contact with linebacker Cody Simon.
After Pineiro had a point-after kick blocked for the second straight game, his next attempt sailed wide right, keeping the 49ers’ lead at 19-7 only 1:21 into the second quarter. Pineiro made field goals on three consecutive possessions (48, 47, 47 yards) to up the 49ers’ lead to 28-10.
The Cardinals were threatening the 49ers’ red zone when Lenoir cut in for a third-quarter interception and returned it 64 yards to the Cardinals’ 14-yard line. That theft, combined with Mustapha’s just before halftime, marked the 49ers’ first game with two interceptions in over a year (Oct. 27 vs Dallas).
The 49ers scored 16 consecutive points before Brissett threw touchdown passes to tight end Trey McBride (10 yards) and Greg Dortch (17 yards) in the fourth quarter. Neither Shanahan nor Mustapha was aware Brissett made history for single-game completions.
Said Mustapha: “They knew they had to lean on the pass. Once they started their hurry-up, we wanted to keep plays in front of us. Dink and dunk stuff wasn’t going to kill us. If it looks better for him on the stat sheet, then kudos to him. But that ain’t going to kill us.”
San Francisco 49ers safety Malik Mustapha (6) returns an interception against the Arizona Cardinals during the first half of an NFL football game in Glendale, Ariz., Sunday, Nov. 16, 2025. (AP Photo/Rick Scuteri)




