November 30, 2025 | Huntington Bank Field, Cleveland, OH | Final: SF 49ers 26, CLE Browns 8
Brock Purdy scored a touchdown and danced the Dougie in Cleveland’s Dawg Pound end zone. The San Francisco 49ers needed no masterclass to win this one — just three Cleveland turnovers, three short fields, and the composure to finish every time they got one. The Browns (3-9) handed Shedeur Sanders a rough first home start. The 49ers (9-4) walked away with their third straight win.
Below is the complete box score and player stats breakdown from the Week 13 matchup.
Table of Contents
Game Info
| Date | November 30, 2025 |
| Venue | Huntington Bank Field, Cleveland, OH |
| Attendance | 64,042 |
| Weather | 35°F, 73% humidity, 20 mph wind |
| SF Record | 9-4 |
| CLE Record | 3-9 |
| Vegas Line | SF -5.0 |
| Over/Under | 35.5 (Under) |
Scoring Summary
| Qtr | Time | Team | Play | Score |
|---|---|---|---|---|
| Q1 | 8:15 | SF | Christian McCaffrey 1-yd run (Matt Gay kick) | SF 7, CLE 0 |
| Q2 | 0:39 | CLE | Harold Fannin Jr. 34-yd TD pass from Sanders (Quinshon Judkins 2-pt run) | SF 7, CLE 8 |
| Q2 | 0:00 | SF | Matt Gay 25-yd FG | SF 10, CLE 8 |
| Q3 | 1:29 | SF | Brock Purdy 2-yd run (Matt Gay kick) | SF 17, CLE 8 |
| Q4 | 11:05 | SF | Jauan Jennings 7-yd TD pass from Purdy (2-pt conv. failed) | SF 23, CLE 8 |
| Q4 | 4:09 | SF | Matt Gay 31-yd FG | SF 26, CLE 8 |
All three San Francisco touchdowns came off short fields manufactured by Cleveland’s own mistakes. Skyy Moore’s 66-yard punt return set up the first score. A fumbled aborted snap by Harold Fannin on fourth-and-one — recovered by Luke Gifford at the Cleveland 32 — led to Purdy’s rushing touchdown. Gage Larvadain’s muffed punt at the Cleveland 18 set up Jennings’ catch six plays later.
“We were hoping we could get some turnovers and some big plays from special teams, which we got a huge one with Skyy on the return,” head coach Kyle Shanahan said. “When you play that way, just eventually you’re going to get the points.”
Team Stats
| Category | SF 49ers | CLE Browns |
|---|---|---|
| Total Yards | 252 | 253 |
| Net Passing Yards | 161 | 115 |
| Rushing Yards | 91 | 138 |
| Total Plays | 64 | 60 |
| First Downs | 19 | 15 |
| 3rd Down Conv. | 11/17 (65%) | 3/11 (27%) |
| 4th Down Conv. | 0/0 | 0/4 |
| Turnovers | 0 | 2 |
| Fumbles Lost | 0 | 2 |
| Penalties–Yards | 3–11 | 4–25 |
| Sacks–Yards Lost | 1–7 | 3–34 |
| Red Zone (Scored–Att) | 3/5 | 0/1 |
| Time of Possession | 30:10 | 29:50 |
Total yardage was nearly identical. Third-down conversion rate (65% vs 27%), turnovers, red zone efficiency, and sacks allowed tells the real story of how an 18-point gap opened up between two teams that ran almost the same number of plays.
San Francisco 49ers Offensive Stats
Passing Stats
| Player | C/ATT | YDS | AVG | TD | INT | SACKS | RTG | QBR | PFF Grade |
|---|---|---|---|---|---|---|---|---|---|
| Brock Purdy | 16/29 | 168 | 5.8 | 1 | 0 | 1–7 | 83.7 | 78.1 | 79.5 |
| Christian McCaffrey* | 0/1 | 0 | — | 0 | 0 | — | 39.6 | 2.7 | — |
| Team | 16/30 | 168 | 5.6 | 1 | 0 | 1–7 | — | — | — |
*Pass attempt only
Purdy operated efficiently in difficult wind conditions, completing 16 of 29 for 168 yards and a touchdown with zero interceptions. He faced 10 pressures on 31 dropbacks but moved the ball cleanly on short and intermediate routes, with an average depth of target of 9.5 yards. His 33-yard completion to George Kittle in the final seconds of the first half — where Kittle physically outmuscled Browns safety Ronnie Hickman for the ball at the Cleveland 7 — set up Gay’s halftime field goal that reclaimed the lead.
The rushing touchdown was his first of the 2025 season and ninth of his career. What followed was a Dougie dance in front of the Dawg Pound.
“Once I got to the end zone I was there by myself for a little bit and I was like ‘alright, Dougie,'” Purdy said.
Kittle’s take: “He was really good at it, and I was surprised. A white guy has a little motion.”
Rushing Stats
| Player | CAR | YDS | AVG | TD | LNG | 1D |
|---|---|---|---|---|---|---|
| Christian McCaffrey | 20 | 53 | 2.7 | 1 | 7 | 4 |
| Brian Robinson Jr. | 8 | 26 | 3.3 | 0 | 9 | 1 |
| Demarcus Robinson | 1 | 6 | 6.0 | 0 | 6 | 0 |
| Brock Purdy | 2 | 4 | 2.0 | 1 | 2 | 1 |
| Mac Jones | 2 | 2 | 1.0 | 0 | 3 | 1 |
| Team | 33 | 91 | 2.8 | 2 | 9 | — |
McCaffrey entered Week 13 leading the NFL in scrimmage yards. He finished with 74 total (53 rushing, 21 receiving) — his second-lowest output of the season. Cleveland’s front limited him to 2.7 yards per carry, though he found more room after halftime as the game opened up.
Receiving Stats
| Player | TGT | REC | YDS | AVG | TD | LNG | YAC |
|---|---|---|---|---|---|---|---|
| George Kittle | 5 | 4 | 67 | 16.8 | 0 | 33 | 7 |
| Jauan Jennings | 6 | 4 | 39 | 9.8 | 1 | 13 | 2 |
| Kyle Juszczyk | 2 | 2 | 27 | 13.5 | 0 | 23 | 4 |
| Christian McCaffrey | 4 | 4 | 21 | 5.3 | 0 | 12 | 26 |
| Ricky Pearsall | 3 | 2 | 14 | 7.0 | 0 | 13 | 6 |
| Kendrick Bourne | 1 | 0 | 0 | — | 0 | — | — |
| Luke Farrell | 1 | 0 | 0 | — | 0 | — | — |
| Demarcus Robinson | 1 | 0 | 0 | — | 0 | — | — |
| Team | 23 | 16 | 168 | 10.5 | 1 | 33 | — |
Cleveland Browns Offensive Stats
Passing Stats
| Player | C/ATT | YDS | AVG | TD | INT | SACKS | RTG | QBR | PFF Grade |
|---|---|---|---|---|---|---|---|---|---|
| Shedeur Sanders | 16/25 | 149 | 6.0 | 1 | 0 | 3–34 | 93.6 | 16.3 | — |
| Dillon Gabriel | 1/1 | 0 | 0.0 | 0 | 0 | 0–0 | 79.2 | 2.3 | — |
| Team | 17/26 | 149 | 5.7 | 1 | 0 | 3–34 | — | — | — |
Sanders completed 8 of his first 11 passes and looked composed early. After halftime, Cleveland produced only 76 offensive yards for the rest of the game. Three sacks cost 34 yards in losses and stalled three separate drives. His passer rating reads well on paper; the QBR of 16.3 is closer to how the second half actually went.
“We ran the ball very well. And when we got in certain passing situations and field position, everything like that, it wasn’t the best,” Sanders said.
Rushing Stats
| Player | CAR | YDS | AVG | TD | LNG | 1D |
|---|---|---|---|---|---|---|
| Quinshon Judkins | 23 | 91 | 4.0 | 0 | 17 | 6 |
| Dylan Sampson | 4 | 23 | 5.8 | 0 | 9 | 1 |
| Malachi Corley | 1 | 9 | 9.0 | 0 | 9 | 0 |
| Isaiah Bond | 1 | 9 | 9.0 | 0 | 9 | 1 |
| Shedeur Sanders | 1 | 6 | 6.0 | 0 | 6 | 0 |
| Harold Fannin Jr. | 1 | 0 | 0.0 | 0 | 0 | 0 |
| Team | 31 | 138 | 4.5 | 0 | 17 | — |
Judkins was Cleveland’s most productive player from start to finish. His 23-carry, 91-yard performance, paired with three receptions for 18 yards out of the backfield, gave the Browns their only sustained stretches of offensive rhythm.
Receiving Stats
| Player | TGT | REC | YDS | AVG | TD | LNG | YAC |
|---|---|---|---|---|---|---|---|
| Harold Fannin Jr. | 5 | 3 | 43 | 14.3 | 1 | 34 | 18 |
| Jerry Jeudy | 4 | 3 | 26 | 8.7 | 0 | 11 | 2 |
| Gage Larvadain | 3 | 2 | 23 | 11.5 | 0 | 13 | 6 |
| Quinshon Judkins | 3 | 3 | 18 | 6.0 | 0 | 13 | 26 |
| Isaiah Bond | 2 | 1 | 18 | 18.0 | 0 | 18 | 0 |
| Jerome Ford | 3 | 3 | 17 | 5.7 | 0 | 9 | 21 |
| David Njoku | 2 | 2 | 4 | 2.0 | 0 | 4 | 2 |
| Cedric Tillman | 1 | 0 | 0 | — | 0 | — | — |
| Team | 23 | 17 | 149 | 8.8 | 1 | 34 | — |
Fannin’s 34-yard touchdown catch with 39 seconds left in the first half briefly gave Cleveland an 8-7 lead. He caught Sanders’ pass at the Cleveland 9 near the left sideline after Luke Gifford lost coverage, then physically separated from Renardo Green and Ji’Ayir Brown to get into the end zone. It stood as Cleveland’s only genuine red zone moment of the game.
Defense
San Francisco 49ers Defense
| Player | POS | TOT | SOLO | SACKS | TFL | PD | QB HTS | PFF Grade |
|---|---|---|---|---|---|---|---|---|
| Clelin Ferrell | DL | 9 | 6 | 2.0 | 2 | 0 | 2 | — |
| Upton Stout | CB | 7 | 5 | 0 | 1 | 0 | 0 | — |
| Malik Mustapha | S | 7 | 5 | 0 | 1 | 1 | 0 | — |
| Curtis Robinson | LB | 6 | 3 | 0 | 0 | 0 | 0 | 80.7 |
| Dee Winters | LB | 6 | 3 | 0 | 0 | 0 | 0 | 78.9 |
| Ji’Ayir Brown | S | 5 | 4 | 0 | 0 | 0 | 0 | — |
| Deommodore Lenoir | CB | 4 | 1 | 0 | 0 | 0 | 0 | — |
| Jordan Elliott | DL | 4 | 0 | 0 | 0 | 0 | 1 | — |
| Keion White | DL | 3 | 3 | 1.0 | 1 | 0 | 2 | — |
| Renardo Green | CB | 3 | 3 | 0 | 0 | 0 | 0 | — |
| Jason Pinnock | S | 2 | 2 | 0 | 0 | 0 | 0 | — |
| Bryce Huff | DL | 2 | 1 | 0 | 0 | 0 | 1 | — |
| CJ West | DL | 2 | 1 | 0 | 0 | 0 | 0 | — |
Ferrell led all San Francisco pass rushers with two sacks and five total pressures. White’s sack in the fourth quarter ended Cleveland’s final meaningful drive. The 49ers defense finished with three sacks, five tackles for loss, and generated six QB hits on Sanders across 29 dropbacks.
Cleveland Browns Defense
| Player | POS | TOT | SOLO | SACKS | TFL | PD | QB HTS | PFF Grade |
|---|---|---|---|---|---|---|---|---|
| Carson Schwesinger | LB | 10 | 5 | 0 | 1 | 0 | 1 | 81.1 |
| Ronnie Hickman Jr. | S | 8 | 4 | 0 | 0 | 1 | 0 | — |
| Devin Bush | LB | 7 | 1 | 0 | 0 | 0 | 0 | — |
| Tyson Campbell | CB | 6 | 3 | 0 | 0 | 2 | 0 | — |
| Myles Garrett | DE | 5 | 2 | 1.0 | 2 | 0 | 3 | 83.9 |
| Grant Delpit | S | 5 | 2 | 0 | 0 | 0 | 0 | 78.6 |
| Shelby Harris | DT | 4 | 3 | 0 | 1 | 0 | 0 | — |
| Mason Graham | DT | 4 | 3 | 0 | 0 | 0 | 1 | — |
| Mohamoud Diabate | LB | 4 | 1 | 0 | 0 | 0 | 0 | — |
| Rayshawn Jenkins | S | 4 | 0 | 0 | 0 | 0 | 0 | — |
Garrett’s fourth-quarter sack of Purdy was his 19th of the 2025 season and the sixth consecutive game in which he recorded at least one sack. At that point, he needed four more sacks to surpass the 22.5 single-season record shared by Michael Strahan (2001, New York Giants) and T.J. Watt (2021, Pittsburgh Steelers).
Rookie linebacker Carson Schwesinger led all Cleveland defenders with 10 combined tackles — a performance that earned him a PFF grade of 81.1, the second-highest on the field that day.
Special Teams
| Player | Team | Stat | Detail |
|---|---|---|---|
| Skyy Moore | SF | 3 PR, 69 yds | Long: 66 yds (23.0 avg) |
| Malachi Corley | CLE | 4 KR, 73 yds | Long: 26 yds (18.3 avg) |
| Gage Larvadain | CLE | 3 PR, 3 yds | Long: 3 yds (1.0 avg) — 1 muffed punt |
| Matt Gay | SF | 2/2 FG, 2/2 XP | FG long: 31 yds, 8 total points |
| Thomas Morstead | SF | 5 punts, 178 yds | Avg: 35.6, Long: 42, 3 inside 20 |
| Corey Bojorquez | CLE | 4 punts, 178 yds | Avg: 44.5, Long: 49, 1 touchback |
Moore’s 66-yard return in the first quarter was the play that set the tone. It put San Francisco at the Cleveland 16 with a clean field ahead and led directly to McCaffrey’s opening touchdown six plays later. Gay’s halftime field goal hit the left upright and bounced through on the last play of the second quarter — a moment that kept San Francisco’s lead intact going into the break.
PFF Initial Grades (Top Performers)
| Player | Pos | Team | PFF Grade | Snaps |
|---|---|---|---|---|
| Wyatt Teller | G | CLE | 90.3 | 31 |
| Myles Garrett | ED | CLE | 83.9 | 61 |
| Carson Schwesinger | LB | CLE | 81.1 | 63 |
| Curtis Robinson | LB | SF | 80.7 | 61 |
| Brock Purdy | QB | SF | 79.5 | 63 |
| Dee Winters | LB | SF | 78.9 | 63 |
| Grant Delpit | S | CLE | 78.6 | 63 |
| George Kittle | TE | SF | 78.3 | 58 |
| Ethan Pocic | C | CLE | 77.9 | 56 |
| Jauan Jennings | WR | SF | 73.2 | 54 |
All grades initial and subject to review.
Injuries
San Francisco 49ers
- LB Nick Martin — concussion (Q1)
- OL Ben Bartch — foot (left in second half)
- FB Kyle Juszczyk — ribs (left in second half)
Cleveland Browns
- OT Jack Conklin — concussion (Q2)
- DT Maliek Collins — knee (Q3)
- RB Dylan Sampson — calf (Q3)
Cleveland’s turnover problems were the clearest explanation for how a game with nearly identical yardage totals ended at 26-8. The Browns gave San Francisco three short fields. San Francisco scored on all three. Against a team that good, that kind of self-inflicted damage is unrecoverable. Sanders said as much after the game.
“I know the team counts on me to do my job and do what I got to do,” Sanders said, “and I feel like I failed them today.”
That is an honest assessment from a rookie quarterback in his first home start, playing behind an offensive line that gave up three sacks for 34 yards in losses. The Browns finished 3-9 with the full 49ers vs Browns box score reflecting a team still a long way from competing at this level. San Francisco, meanwhile, kept winning games they were supposed to win — a 9-4 record built as much on not beating themselves as it was on outplaying their opponents.

