Brock Purdy posted a 140.3 passer rating for the seventh time in his career โ tying Kurt Warner for the most such games by a quarterback through four NFL seasons โ as the San Francisco 49ers defeated the Tennessee Titans 37-24 at Levi’s Stadium on December 14, 2025. Trent Williams delivered a career-high 95.6 PFF grade, San Francisco scored on its first five possessions for the first time since 2021, and the 49ers never punted. The full Tennessee Titans vs San Francisco 49ers match player stats, box score, and team stats from Week 15 are below.
Table of Contents
Game Information
| Detail | Information |
|---|---|
| Date | December 14, 2025 |
| Venue | Levi’s Stadium, Santa Clara, CA |
| Attendance | 71,042 |
| Broadcast | FOX |
| Referee | Craig Wrolstad |
| Final Score | Tennessee Titans 24, San Francisco 49ers 37 |
| Records | TEN 2-12 (2-5 Away) / SF 10-4 (4-2 Home) |
Scoring Summary
| Qtr | Time | Team | Play | Drive | Score |
|---|---|---|---|---|---|
| 1st | 7:48 | SF | Jauan Jennings 4-yd pass from Brock Purdy (Pineiro kick) | 12 plays, 70 yds, 6:03 | TEN 0 โ SF 7 |
| 1st | 1:22 | TEN | Joey Slye 25-yd FG | 10 plays, 63 yds, 6:26 | TEN 3 โ SF 7 |
| 2nd | 13:03 | SF | Christian McCaffrey 1-yd rush (Pineiro kick) | 7 plays, 70 yds, 3:19 | TEN 3 โ SF 14 |
| 2nd | 7:43 | TEN | Gunnar Helm 34-yd pass from Cam Ward (Slye kick) | 8 plays, 68 yds, 5:20 | TEN 10 โ SF 14 |
| 2nd | 0:56 | SF | Eddy Pineiro 33-yd FG | 14 plays, 50 yds, 6:47 | TEN 10 โ SF 17 |
| 3rd | 12:54 | SF | Jauan Jennings 13-yd pass from Brock Purdy (Pineiro kick) | 4 plays, 67 yds, 2:06 | TEN 10 โ SF 24 |
| 3rd | 2:10 | SF | George Kittle 1-yd pass from Brock Purdy (Pineiro kick) | 15 plays, 95 yds, 9:14 | TEN 10 โ SF 31 |
| 4th | 14:16 | TEN | Jeffery Simmons 1-yd pass from Cam Ward (Slye kick) | 2 plays, 44 yds, 0:30 | TEN 17 โ SF 31 |
| 4th | 9:28 | SF | Eddy Pineiro 37-yd FG | 8 plays, 41 yds, 4:48 | TEN 17 โ SF 34 |
| 4th | 5:33 | TEN | Tony Pollard 6-yd rush (Slye kick) | 10 plays, 64 yds, 3:55 | TEN 24 โ SF 34 |
| 4th | 1:10 | SF | Eddy Pineiro 40-yd FG | 10 plays, 43 yds, 4:23 | TEN 24 โ SF 37 |
Passing Stats
| Player | Team | C/ATT | YDS | AVG | TD | INT | SACKS | QBR | RTG |
|---|---|---|---|---|---|---|---|---|---|
| Brock Purdy | SF | 23/30 | 295 | 9.8 | 3 | 0 | 2-3 | 85.9 | 140.3 |
| Cam Ward | TEN | 18/29 | 170 | 5.9 | 2 | 0 | 0-0 | 37.4 | 101.2 |
Rushing Stats
San Francisco 49ers
| Player | CAR | YDS | AVG | TD | LG |
|---|---|---|---|---|---|
| Christian McCaffrey | 22 | 73 | 3.3 | 1 | 9 |
| Brock Purdy | 7 | 44 | 6.3 | 0 | 26 |
| Brian Robinson Jr. | 9 | 21 | 2.3 | 0 | 6 |
| Team | 38 | 138 | 3.6 | 1 | 26 |
Tennessee Titans
| Player | CAR | YDS | AVG | TD | LG |
|---|---|---|---|---|---|
| Tony Pollard | 14 | 104 | 7.4 | 1 | 22 |
| Tyjae Spears | 3 | 34 | 11.3 | 0 | 20 |
| Kalel Mullings | 1 | 3 | 3.0 | 0 | 3 |
| Cam Ward | 1 | 2 | 2.0 | 0 | 2 |
| Chimere Dike | 1 | -7 | -7.0 | 0 | -7 |
| Team | 20 | 136 | 6.8 | 1 | 22 |
Receiving Stats
San Francisco 49ers
| Player | REC | TGT | YDS | AVG | TD | LG |
|---|---|---|---|---|---|---|
| Ricky Pearsall | 6 | 7 | 96 | 16.0 | 0 | 38 |
| George Kittle | 8 | 9 | 88 | 11.0 | 1 | 24 |
| Jauan Jennings | 3 | 5 | 37 | 12.3 | 2 | 20 |
| Demarcus Robinson | 2 | 2 | 36 | 18.0 | 0 | 30 |
| Kendrick Bourne | 2 | 3 | 17 | 8.5 | 0 | 11 |
| Christian McCaffrey | 1 | 1 | 14 | 14.0 | 0 | 14 |
| Kyle Juszczyk | 1 | 1 | 7 | 7.0 | 0 | 7 |
| Team | 23 | 28 | 295 | 12.8 | 3 | 38 |
Tennessee Titans
| Player | REC | TGT | YDS | AVG | TD | LG |
|---|---|---|---|---|---|---|
| Gunnar Helm | 4 | 4 | 49 | 12.3 | 1 | 34 |
| Van Jefferson | 1 | 5 | 43 | 43.0 | 0 | 43 |
| Chig Okonkwo | 4 | 6 | 33 | 8.3 | 0 | 17 |
| Elic Ayomanor | 1 | 1 | 17 | 17.0 | 0 | 17 |
| Chimere Dike | 4 | 5 | 17 | 4.3 | 0 | 8 |
| Tony Pollard | 1 | 2 | 8 | 8.0 | 0 | 8 |
| Tyjae Spears | 2 | 2 | 2 | 1.0 | 0 | 2 |
| Jeffery Simmons | 1 | 1 | 1 | 1.0 | 1 | 1 |
| James Proche II | 0 | 1 | โ | โ | 0 | โ |
| Team | 18 | 27 | 170 | 9.4 | 2 | 43 |
Defensive Stats
San Francisco 49ers
| Player | TOT | SOLO | SACKS | TFL | PD | QB HTS |
|---|---|---|---|---|---|---|
| Malik Mustapha | 10 | 6 | 0 | 0 | 0 | 0 |
| Curtis Robinson | 7 | 3 | 0 | 0 | 1 | 0 |
| Clelin Ferrell | 6 | 2 | 0 | 0 | 0 | 1 |
| Dee Winters | 5 | 2 | 0 | 1 | 0 | 0 |
| Renardo Green | 4 | 2 | 0 | 0 | 0 | 0 |
| Deommodore Lenoir | 4 | 1 | 0 | 0 | 0 | 0 |
| Jason Pinnock | 3 | 1 | 0 | 0 | 0 | 0 |
| Robert Beal Jr. | 3 | 1 | 0 | 0 | 0 | 0 |
| C.J. West | 2 | 2 | 0 | 0 | 0 | 0 |
| Garret Wallow | 2 | 1 | 0 | 0 | 0 | 0 |
| Ji’Ayir Brown | 2 | 1 | 0 | 0 | 0 | 0 |
| Bryce Huff | 2 | 0 | 0 | 0 | 0 | 0 |
| Upton Stout | 2 | 0 | 0 | 0 | 0 | 0 |
| Christian McCaffrey | 1 | 1 | 0 | 0 | 0 | 0 |
| Luke Gifford | 1 | 0 | 0 | 0 | 0 | 0 |
| Chase Lucas | 1 | 0 | 0 | 0 | 0 | 0 |
| Keion White | 1 | 0 | 0 | 0 | 0 | 2 |
| Kalia Davis | 1 | 0 | 0 | 0 | 1 | 0 |
| Team | 57 | 23 | 0 | 1 | 2 | 3 |
Tennessee Titans
| Player | TOT | SOLO | SACKS | TFL | PD | QB HTS |
|---|---|---|---|---|---|---|
| Cedric Gray | 16 | 7 | 0 | 0 | 0 | 0 |
| Kendell Brooks | 8 | 3 | 0 | 0 | 0 | 0 |
| Amani Hooker | 7 | 5 | 0 | 0 | 1 | 0 |
| Marcus Harris | 7 | 5 | 0 | 1 | 1 | 0 |
| Jeffery Simmons | 7 | 4 | 1 | 2 | 0 | 1 |
| T’Vondre Sweat | 7 | 3 | 0 | 0 | 0 | 0 |
| Darrell Baker Jr. | 5 | 4 | 0 | 0 | 0 | 0 |
| Cody Barton | 5 | 1 | 0 | 0 | 0 | 0 |
| James Williams Sr. | 4 | 4 | 0 | 1 | 0 | 0 |
| Jihad Ward | 3 | 1 | 0 | 0 | 0 | 0 |
| Jaylen Harrell | 2 | 1 | 1 | 1 | 0 | 2 |
| Sebastian Joseph-Day | 2 | 1 | 0 | 0 | 0 | 1 |
| Kaiir Elam | 2 | 1 | 0 | 0 | 0 | 0 |
| Arden Key | 2 | 0 | 0 | 0 | 0 | 1 |
| Joe Bachie | 2 | 0 | 0 | 0 | 0 | 0 |
| Kevin Winston Jr. | 1 | 1 | 0 | 0 | 0 | 0 |
| Johnny Hekker | 1 | 0 | 0 | 0 | 0 | 0 |
| James Lynch | 1 | 0 | 0 | 0 | 0 | 0 |
| David Martin-Robinson | 1 | 0 | 0 | 0 | 0 | 0 |
| Julius Chestnut | 1 | 0 | 0 | 0 | 0 | 0 |
| Kalel Mullings | 1 | 0 | 0 | 0 | 0 | 0 |
| Team | 85 | 41 | 2 | 5 | 2 | 5 |
Fumbles
| Player | Team | FUM | LOST | REC |
|---|---|---|---|---|
| Brock Purdy | SF | 1 | 1 | 0 |
| Kaiir Elam | TEN | 0 | 0 | 1 |
Neither team threw an interception.
Special Teams
Kicking
| Player | Team | FG | PCT | LONG | XP | PTS |
|---|---|---|---|---|---|---|
| Eddy Pineiro | SF | 3/3 | 100.0% | 40 | 4/4 | 13 |
| Joey Slye | TEN | 1/2 | 50.0% | 25 | 3/3 | 6 |
Slye missed a 50-yard attempt on the final play of the first half.
Punting
| Player | Team | NO | YDS | AVG | TB | IN 20 | LONG |
|---|---|---|---|---|---|---|---|
| Johnny Hekker | TEN | 3 | 136 | 45.3 | 0 | 1 | 56 |
San Francisco did not punt.
Kick Returns
| Player | Team | NO | YDS | AVG | LG | TD |
|---|---|---|---|---|---|---|
| Chimere Dike | TEN | 4 | 90 | 22.5 | 27 | 0 |
| Brian Robinson Jr. | SF | 2 | 53 | 26.5 | 31 | 0 |
Punt Returns
| Player | Team | NO | YDS | AVG | LG | TD |
|---|---|---|---|---|---|---|
| Skyy Moore | SF | 1 | 18 | 18.0 | 18 | 0 |
Tennessee had no punt returns.
Full Team Stats
| Stat | TEN | SF |
|---|---|---|
| Score | 24 | 37 |
| Total Yards | 306 | 430 |
| Total Plays | 49 | 70 |
| Yards per Play | 6.2 | 6.1 |
| Total Drives | 9 | 8 |
| 1st Downs | 18 | 28 |
| — Passing | 8 | 18 |
| — Rushing | 9 | 7 |
| — Penalty | 1 | 3 |
| Net Passing Yards | 170 | 292 |
| Comp/Att | 18/29 | 23/30 |
| Yards per Pass | 5.9 | 9.1 |
| Sacks-Yards Lost | 0-0 | 2-3 |
| Rushing Yards | 136 | 138 |
| Rushing Attempts | 20 | 38 |
| Yards per Rush | 6.8 | 3.6 |
| 3rd Down Efficiency | 3/9 (33%) | 9/15 (60%) |
| 4th Down Efficiency | 2/2 (100%) | 1/1 (100%) |
| Red Zone (Made-Att) | 2/3 | 4/6 |
| Penalties | 7-57 | 6-30 |
| Turnovers | 0 | 1 |
| Fumbles Lost | 0 | 1 |
| Interceptions | 0 | 0 |
| Time of Possession | 22:55 | 37:05 |
Net passing yards reflect sack yardage deducted from gross totals. Purdy’s individual line shows 295 gross passing yards.
PFF Grades
San Francisco 49ers
| Player | Position | Grade | Category |
|---|---|---|---|
| Trent Williams | LT | 95.6 | Overall (career high) |
| Trent Williams | LT | 95.1 | Run Blocking |
| Trent Williams | LT | 87.5 | Pass Blocking |
| Brock Purdy | QB | 91.0 | Overall (season high) |
| Brock Purdy | QB | 90.7 | Passing (season high) |
| Brock Purdy | QB | 71.0 | Run (3rd consecutive game leading SF) |
| George Kittle | TE | 89.8 | Overall |
| George Kittle | TE | 90.1 | Receiving |
| Ricky Pearsall | WR | 88.0 | Overall (career high) |
| Ricky Pearsall | WR | 89.2 | Receiving |
| Demarcus Robinson | WR | 87.6 | Overall |
| Christian McCaffrey | RB | 58.4 | Overall |
| Dominick Puni | RG | 58.7 | Overall |
Tennessee Titans
| Player | Position | Grade | Category |
|---|---|---|---|
| Jeffery Simmons | DT | 78.9 | Pass Rush (game’s best) |
| Cedric Gray | LB | 90.2 | Run Defense (game’s best) |
| James Williams Sr. | LB | 80.1 | Overall Defense (game’s best) |
| Cam Ward | QB | 59.1 | Overall |
| Cam Ward | QB | 56.8 | Passing |
Advanced Metrics
Brock Purdy
Purdy’s 140.3 passer rating was the seventh time in his career he’d reached that mark, tying Kurt Warner for the most such games by a quarterback through four NFL seasons. His 91.0 PFF offensive grade and 90.7 passing grade were both season highs โ his best marks since a 91.1/91.8 showing against the Rams in Week 3 of the 2024 season.
The offensive line gave him an average of 3.44 seconds to throw, the highest since Week 5 of the 2024 season. Even under pressure, Purdy completed 6 of 10 attempts for 72 yards, a touchdown, and a 115.4 passer rating. On intermediate passes between 10 and 19 yards, he went 9-of-14 for 160 yards, one touchdown, and a 127.1 passer rating for the second consecutive game.
Trent Williams
Williams’ 95.6 overall grade was the highest of his career, with a 95.1 run-blocking grade and an 87.5 pass-blocking grade. He allowed just one pressure on 41 pass-blocking snaps. His season grade of 90.2 put him on pace to exceed 90.0 for the fifth time in six seasons.
George Kittle
Kittle caught 8 of 9 targets for 88 yards and a touchdown. Eighty of those 88 receiving yards came after the catch, and he forced two missed tackles.
Ricky Pearsall
Pearsall’s career-high 88.0 PFF grade came on a game-high 96 receiving yards on six catches. Five of his six receptions converted first downs, and 21 of his 96 yards came after the catch. He had not recorded a drop through the 2025 season.
Christian McCaffrey
McCaffrey ran 22 times for 73 yards and a touchdown. Seventy of those yards came after contact. He was allowed just 0.14 yards per carry before contact. Tennessee’s running backs, by comparison, averaged 3.67 yards before contact across their 20 carries.
San Francisco Defense
The 49ers’ defense was charged with 11 missed tackles. Cam Ward โ who had been sacked more than any other quarterback in the NFL entering the game โ was pressured on just 8 of 29 dropbacks (27.6%), and San Francisco failed to record a sack. Of the Titans’ 19 total pressures generated, the 49ers’ offensive line allowed only 10, with three more charged to Purdy.
Tennessee Pass Rush
Keion White led San Francisco’s pass rushers with a 72.5 grade. Jeffery Simmons posted the game’s best pass-rush grade at 78.9, in addition to his sack, forced fumble, and touchdown catch.
Statistical Milestones
Jeffery Simmons โ Rare Three-Category Game Simmons recorded a sack, a forced fumble, and a touchdown reception in the same game. Since sacks became an official NFL statistic in 1982, only five other players had accomplished that: J.J. Watt did it twice for Houston in 2014, Mike Vrabel in 2007, Jared Allen in 2017, and Barry Krauss in 1982.
Brock Purdy โ Tying Kurt Warner Purdy’s seventh career game with a 140.3 passer rating tied Kurt Warner for the most such games by a quarterback in his first four NFL seasons.
San Francisco Offense โ First Five Possessions The 49ers scored on their first five possessions, the first time they had done so since the 2021 season. They ran 70 plays, held possession for 37:05, converted 9 of 15 third downs, and did not punt.
Injury Report
Tennessee Titans: S Xavier Woods (hamstring), S Mike Brown (ankle), and S Kevin Winston Jr. (hamstring) all left in the first half and did not return. G Kevin Zeitler (groin), WR Van Jefferson (back), and LB Cedric Gray (concussion) did not return after exiting in the second half.
San Francisco 49ers: DT Jordan Elliott was scratched before kickoff after injuring his knee during warmups. WR Ricky Pearsall suffered an ankle injury on the first play from scrimmage, returned to catch six passes for 96 yards, then left late in the game with a knee injury the team described as minor. OL Spencer Burford left with an ankle injury but returned.
The 37-24 win pushed San Francisco to 10-4 and extended what became a four-game winning streak heading into the final weeks of the 2025 regular season. Purdy’s 295-yard, three-touchdown performance, backed by a career-high outing from Williams up front, stood as one of the cleaner statistical displays of the 49ers’ offensive ceiling that year.

