San Francisco beat Carolina 20-9 on Monday Night Football, November 24, at Levi’s Stadium. Christian McCaffrey had 142 scrimmage yards (89 rushing, 53 receiving) with one touchdown against his former team. Ji’Ayir Brown intercepted Bryce Young twice and won NFC Defensive Player of the Week honors, while Young finished 18 of 29 for 169 yards with one touchdown and two interceptions in the loss.
Table of Contents
Quarterback Stats
| Stat Category | Bryce Young (CAR) | Brock Purdy (SF) |
|---|---|---|
| Completions/Attempts | 18/29 | 23/32 |
| Passing Yards | 169 | 193 |
| Touchdowns | 1 | 1 |
| Interceptions | 2 | 3 |
| Passer Rating | 60.8 | 58.5 |
| Sacks Taken | 1 (8 yards) | 0 |
| Average Depth of Target | 6.6 yards | 6.5 yards |
| Time to Throw | 2.95 seconds | 2.81 seconds |
| Completion Percentage | 62.1% | 71.9% |
Young threw his 15th touchdown pass of the season. Only Steve Beuerlein, Jake Delhomme, and Cam Newton had previously thrown 15-plus TD passes in consecutive seasons for Carolina.
Purdy threw three interceptions in his second game back from a toe injury that kept him out from Week 4 through Week 11. All three picks came on throws over 20 yards downfield, the most by any quarterback in a single game since Nick Mullens in Week 16 of 2023, according to NFL Next Gen Stats.
Carolina pressured Purdy four times but scored no points. Young went 2 of 7 for just 11 yards against man coverage, with both interceptions happening on blitzes. The 49ers blitzed on seven of eight man coverage dropbacks.
Rushing Leaders
| Player | Team | Carries | Yards | Average | Touchdowns | Long | 1st Downs |
|---|---|---|---|---|---|---|---|
| Christian McCaffrey | SF | 24 | 89 | 3.7 | 1 | 17 | 6 |
| Brian Robinson Jr. | SF | 7 | 40 | 5.7 | 0 | 12 | 2 |
| Rico Dowdle | CAR | 6 | 38 | 6.3 | 0 | 17 | 2 |
| Chuba Hubbard | CAR | 3 | 16 | 5.3 | 0 | 10 | 0 |
| Brock Purdy | SF | 6 | 16 | 2.7 | 0 | 9 | 4 |
| Bryce Young | CAR | 4 | 15 | 3.8 | 0 | 7 | 1 |
McCaffrey scored on a 12-yard run in the third quarter, making it 17-3 San Francisco. This was his 10th 100-yard scrimmage game of the season, most in the NFL. He has 67 career 100-yard scrimmage games, most among active backs. McCaffrey’s 1,439 scrimmage yards through Week 12 lead the league. He’s on track for his second career 1,000-1,000 season.
Carolina threw 29 passes but ran just 13 times. Dowdle averaged 6.3 yards per carry on six attempts. Hubbard averaged 5.3 yards on three carries. The game was within 14 points until late in the fourth quarter, but Carolina didn’t run enough to maintain possession.
Receiving Stats
McCaffrey ran the ball well. Kittle caught passes.
| Player | Team | Receptions | Targets | Yards | Average | Touchdowns | Long | 1st Downs |
|---|---|---|---|---|---|---|---|---|
| George Kittle | SF | 6 | 10 | 78 | 13.0 | 0 | 25 | 4 |
| Christian McCaffrey | SF | 7 | 7 | 53 | 7.6 | 0 | 19 | 4 |
| Jauan Jennings | SF | 5 | 7 | 41 | 8.2 | 1 | 12 | 2 |
| Rico Dowdle | CAR | 4 | 4 | 36 | 9.0 | 0 | 12 | 1 |
| Tetairoa McMillan | CAR | 2 | 7 | 35 | 17.5 | 1 | 29 | 1 |
| Jalen Coker | CAR | 3 | 4 | 32 | 10.7 | 0 | 18 | 2 |
| Chuba Hubbard | CAR | 4 | 4 | 27 | 6.8 | 0 | 14 | 2 |
Kittle has four touchdowns since Week 8, tied for most among tight ends. Purdy targeted him 10 times after throwing three first-half interceptions. Kittle became San Francisco’s primary target in the second half.
McCaffrey caught all seven targets. He’s the third running back in NFL history with 50-plus receiving yards in at least 50 career games, joining Larry Centers (55) and Hall of Famer Marshall Faulk (50).
Young hit Tetairoa McMillan for a 29-yard touchdown late in the third quarter. McMillan has 56 catches and 783 yards as a rookie, ranking third in Panthers rookie history for receptions and first among all rookies this year for receiving yards. He was targeted seven times but caught just two passes. An early drop stopped a promising drive.
Jennings caught the opening touchdown, a 12-yard pass. His five catches included a third-down grab that gave San Francisco the ball inside Carolina territory before McCaffrey’s touchdown run.
Panthers Defense
Carolina’s defense held the game to 10-3 at halftime.
| Player | Position | Tackles | Solo | Sacks | TFL | QB Hits | Interceptions | Pass Deflections |
|---|---|---|---|---|---|---|---|---|
| Krys Barnes | LB | 10 | 3 | 0 | 0 | 0 | 0 | 0 |
| Tre’von Moehrig | S | 8 | 4 | 0 | 1 | 0 | 0 | 0 |
| Nick Scott | S | 8 | 1 | 0 | 0 | 0 | 0 | 0 |
| A’Shawn Robinson | DE | 7 | 1 | 0 | 0 | 1 | 0 | 0 |
| Tershawn Wharton | DT | 6 | 2 | 0 | 0 | 0 | 0 | 0 |
| Jaycee Horn | CB | 1 | 0 | 0 | 0 | 0 | 2 | 2 |
| Mike Jackson | CB | 4 | 2 | 0 | 0 | 0 | 1 | 1 |
Barnes had 10 tackles in his first start after being elevated from the practice squad. He replaced injured starters Christian Rozeboom and Trevin Wallace. Barnes used his third and final practice squad elevation, meaning he must be signed to the 53-man roster to play again this season.
Horn recorded two interceptions before leaving at halftime with a concussion. He read Purdy’s first throw to Jauan Jennings, cut in front, and returned it 14 yards to San Francisco’s 16-yard line. His second pick stopped a San Francisco drive in the second quarter. Horn leads the team with five interceptions this season.
Jackson intercepted Purdy in the end zone on a pass intended for Ricky Pearsall. Jackson added four tackles.
The Panthers held San Francisco to 1 of 7 on third down (14.3%), the lowest opponent third-down conversion rate allowed since limiting Miami to 0 of 7 (0.0%) on December 4, 2022, according to official 49ers stats.
49ers Defense
San Francisco played without several starters but still limited Carolina to 230 yards.
| Player | Position | Tackles | Solo | Sacks | TFL | QB Hits | Interceptions | Pass Deflections |
|---|---|---|---|---|---|---|---|---|
| Malik Mustapha | S | 7 | 7 | 0 | 1 | 0 | 0 | 0 |
| Upton Stout | CB | 6 | 2 | 0 | 0 | 0 | 0 | 1 |
| Ji’Ayir Brown | S | 5 | 4 | 0 | 0 | 0 | 2 | 2 |
| Jordan Elliott | DL | 3 | 2 | 0 | 0 | 0 | 0 | 0 |
| Deommodore Lenoir | CB | 3 | 2 | 0 | 0 | 0 | 0 | 0 |
| Clelin Ferrell | DL | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
| Bryce Huff | DL | 1 | 1 | 0 | 0 | 2 | 0 | 0 |
Brown won NFC Defensive Player of the Week after his two-interception performance. He picked off Young in the end zone when the Panthers quarterback tried to force a pass from the 1-yard line. Brown’s second pick stopped Carolina’s best drive in the fourth quarter. Brown has five career interceptions, all in 2025.
Ferrell sacked Young for an eight-yard loss late in the fourth quarter. He has 2.0 sacks this season and 19.0 in his career. Huff had two quarterback hits.
San Francisco played without linebacker Fred Warner, who is out for the remainder of the 2025 season. Robert Saleh’s defense allowed 230 yards and forced two turnovers.
Special Teams
Kicking
| Kicker | Team | Field Goals | Extra Points | Long | Points |
|---|---|---|---|---|---|
| Matt Gay | SF | 2/2 | 2/2 | 47 | 8 |
| Ryan Fitzgerald | CAR | 1/2 | 0/0 | 25 | 3 |
Gay made his 49ers debut after signing on Wednesday, connecting on field goals of 47 and 29 yards while converting both extra point attempts. Fitzgerald made a 25-yard field goal in the second quarter but missed a 57-yard attempt in the fourth quarter.
Returns
| Player | Team | Kick Returns | Yards | Average | Long |
|---|---|---|---|---|---|
| Skyy Moore | SF | 3 | 80 | 26.7 | 43 |
| Trevor Etienne | CAR | 3 | 74 | 24.7 | 26 |
Moore’s 43-yard kickoff return in the second quarter gave the 49ers the ball at the Carolina 46-yard line. Matt Gay kicked a 47-yard field goal on that drive. Sam Martin averaged 50.3 yards on four punts for Carolina with two downed inside the 20-yard line.
Team Comparison
| Category | Panthers | 49ers |
|---|---|---|
| First Downs | 12 | 23 |
| Total Yards | 230 | 340 |
| Total Plays | 43 | 70 |
| Yards Per Play | 5.3 | 4.9 |
| Third Down Conversions | 1/7 (14.3%) | 7/13 (53.8%) |
| Fourth Down Conversions | 0/0 | 2/2 (100%) |
| Red Zone Efficiency | 0/2 (0%) | 2/3 (66.7%) |
| Time of Possession | 22:18 | 37:42 |
| Turnovers | 2 | 3 |
| Penalties | 4-30 | 2-6 |
Three scoring drives of 10-plus plays each took more than six minutes. The opening touchdown drive lasted 15 plays and took 8:43, the first time San Francisco opened with a touchdown drive of 15-plus plays since an 18-play, 93-yard drive against the Rams on November 15, 2021.
Carolina converted just 1 of 7 third downs, the lowest rate of the season. The defense played 70 snaps compared to 43 for the offense. The 49ers converted 7 of 13 third downs and went 2 for 2 on fourth down attempts.
Critical Moments
First Quarter: Goal Line Stand
Jaycee Horn intercepted Brock Purdy on a deep shot to Jauan Jennings, returning it 14 yards to San Francisco’s 16-yard line. Carolina moved to the 1-yard line, but Young’s pass to Mitchell Evans was intercepted in the end zone by Ji’Ayir Brown.
Young took responsibility after the game: “Can’t put the ball in peril like that, especially in a situation like that. Take full ownership, that’s on me. I have to do a better job making decisions.”
The goal-line stand kept San Francisco ahead 7-0 and shifted momentum back to the home team.
Second Quarter: Jackson’s End Zone Pick
Mike Jackson jumped in front of Ricky Pearsall to steal a touchdown pass in the end zone. The interception kept the 49ers from extending their lead and kept Carolina within striking distance at 7-0.
Third Quarter: McCaffrey Extends Lead
San Francisco’s 13-play, 80-yard drive consumed 7:43 and ended with McCaffrey’s 12-yard touchdown run. Kyle Shanahan relied heavily on the run game and short passes to Kittle and Jennings after Purdy’s three first-half picks. The strategy worked perfectly, putting the 49ers ahead 17-3.
Fourth Quarter: Brown Seals Victory
With Carolina trailing 20-9 and driving, Young’s pass over the middle was intercepted by Brown at the 49ers’ 22-yard line. The turnover eliminated the Panthers’ best chance to make it a one-score game with under seven minutes remaining.
Injury Impact
Carolina played without both starting linebackers after Christian Rozeboom (hip/hamstring) and Trevin Wallace (shoulder) were ruled inactive. Claudin Cherelus and Krys Barnes started in their place, but Cherelus left in the first half with a concussion. Rookie Bam Martin-Scott played alongside Barnes after that.
Horn’s concussion at halftime put rookie Corey Thornton on the field, but Thornton also left with an ankle injury in the third quarter. Chau Smith-Wade moved from slot corner to the perimeter opposite Mike Jackson. Right guard Chandler Zavala exited in the third quarter with a calf injury, replaced by Jake Curhan.
The Panthers started their ninth different offensive line combination in 12 games with Austin Corbett stepping in for injured Cade Mays, per ESPN’s game recap. San Francisco lost edge rusher Sam Okuayinonu to an ankle injury but otherwise avoided major setbacks.
Advanced Analysis
McCaffrey’s 300 yards gained off missed tackles this season rank sixth in the NFL. The veteran back now has 38 career games with 50-plus rushing yards and 50-plus receiving yards, second only to Marshall Faulk (41) in NFL history.
Carolina found success running the ball early but chose to attack through the air while trailing by just one score for most of the night. Young averaged 6.4 gross yards per attempt while facing eight pressures from San Francisco’s pass rush. Against man coverage, Young completed just 2 of 7 passes for 11 yards with both interceptions coming against blitzes.
San Francisco’s conservative approach after halftime worked. After Purdy’s three first-half interceptions, Shanahan relied on McCaffrey and short passes to move the chains. This approach led to scoring drives of 13 and 10 plays in the second half. The 49ers totaled 147 rushing yards on 38 attempts (3.9 average) compared to Carolina’s 69 yards on 13 carries (5.3 average).
Six combined interceptions made the turnover battle a wash. Both quarterbacks had trouble on passes thrown more than 20 yards downfield, combining to complete just one of five attempts. San Francisco scored on two of three red zone trips while Carolina went 0 for 2. Young’s goal-line interception cost the Panthers points.
Season Implications
The 49ers moved to 8-4 and tied the Pittsburgh Steelers for most Monday Night Football wins in NFL history with 54. Kyle Shanahan is 3-1 against Carolina. San Francisco has won three straight over the Panthers and sits in playoff position in the NFC West.
Carolina dropped to 6-6, a half-game behind Tampa Bay in the NFC South. The Panthers won three of their last four road games before this loss. Young has won five of his last six starts.
McCaffrey’s performance was his 30th game with 100-plus scrimmage yards as a member of the 49ers, passing Garrison Hearst for fourth-most in franchise history.
Facing his former team for the first time since the 2022 trade, McCaffrey stayed focused: “Obviously when you see familiar faces, it’s always good to see them before the game and after the game. But that’s a completely new team than when I was there. So it’s really just business once the ball was snapped.”
For comprehensive NFL coverage and breaking sports news, visit The Sportie.
Complete statistical breakdowns from this Week 12 matchup are available through Pro Football Reference’s detailed box score and PFF’s week 12 review. Carolina hosts the Los Angeles Rams in Week 13 while San Francisco travels to Cleveland.

