2025 Week 16 · Sun, Dec 21, 2025 · FirstEnergy Stadium
Buffalo BillsWinner
23
Cleveland Browns
20
Buffalo Bills 23–20 — decided on the final possessions. Biggest swing: Q4 5:08, BUF +11% win probability on one snap. Played in 16 mph wind — weigh that when reading the passing lines.
The game in one curve — scrub to replay it
Win probability
(5:08) (Shotgun) 12-S.Sanders sacked at CLE 31 for -13 yards (50-G.Rousseau).
Highest-leverage plays
- Q4 · 5:08BUF +11% win prob(5:08) (Shotgun) 12-S.Sanders sacked at CLE 31 for -13 yards (50-G.Rousseau).
- Q1 · 12:45CLE +9% win prob(12:45) (Shotgun) 12-S.Sanders pass short middle to 83-M.Corley to 50 for -6 yards. Lateral to 16-I.Bond pushed ob at BUF 23 for 27 yards (27-T.White).
- Q4 · 2:53BUF +9% win prob(2:53) 17-J.Allen pass incomplete short right to 88-D.Knox.
- Q4 · 7:55BUF +8% win prob(7:55) (Shotgun) 17-J.Allen sacked at BUF 23 for -13 yards (49-C.Schwesinger).
How the points landed
Scoring summary
- Q1 · 10:47CLE Touchdown
(10:47) 12-S.Sanders pass short right to 44-H.Fannin for 13 yards, TOUCHDOWN. (kick good)
Score after this play: BUF 0 — CLE 7 - Q1 · 7:58BUF Touchdown
(7:58) 4-J.Cook up the middle for 44 yards, TOUCHDOWN. (kick good)
Score after this play: BUF 7 — CLE 7 - Q2 · 12:57BUF Touchdown
(12:57) (No Huddle) 26-Ty.Johnson up the middle for 2 yards, TOUCHDOWN.
Score after this play: BUF 13 — CLE 7 - Q2 · 5:41CLE Field goal
(5:41) 25-A.Szmyt 24 yard field goal is GOOD, Center-50-R.Sunahara, Holder-13-C.Bojorquez.
Score after this play: BUF 13 — CLE 10 - Q2 · 2:27BUF Touchdown
(2:27) (No Huddle) 4-J.Cook up the middle for 3 yards, TOUCHDOWN. (kick good)
Score after this play: BUF 20 — CLE 10 - Q3 · 9:41BUF Field goal
(9:41) 32-M.Badgley 41 yard field goal is GOOD, Center-69-R.Ferguson, Holder-19-M.Wishnowsky.
Score after this play: BUF 23 — CLE 10 - Q3 · 1:39CLE Touchdown
(1:39) 70-Z.Zinter and 98-A.Huntington reported in as eligible. 44-H.Fannin up the middle for 1 yard, TOUCHDOWN. (kick good)
Score after this play: BUF 23 — CLE 17 - Q4 · 8:50CLE Field goal
(8:50) 25-A.Szmyt 41 yard field goal is GOOD, Center-50-R.Sunahara, Holder-13-C.Bojorquez.
Score after this play: BUF 23 — CLE 20
Down-to-down truth
Situational splits
| Metric | Bills | Browns |
|---|---|---|
| Offensive plays | 48 | 64 |
| Total yards | 261 | 294 (edge) |
| Yards per play | 5.4 (edge) | 4.6 |
| Expected points added / play | 0.06 (edge) | -0.10 |
| Success rate | 54% (edge) | 47% |
| Dropback rate | 48% | 58% |
| Dropback efficiency (EPA/play) | -0.34 | -0.26 (edge) |
| Rush efficiency (EPA/play) | 0.43 (edge) | 0.13 |
| Third downs | 2/8 | 8/14 (edge) |
| Red-zone trips → TDs | 0 → 0 | 0 → 0 |
| Explosive plays (10+ rush / 20+ pass) | 4 | 8 (edge) |
| First downs gained on snaps | 16 | 20 (edge) |
| Sacks taken | 2 (edge) | 3 |
| Turnovers | 0 (edge) | 3 |
Browns outgained Bills 294–261 but lost the turnover battle 3–0. That was the game.
Who moved the needle
Top performers
Passing · CLE
20/29, 157 yds, 1 TD, 2 INT
-11.7 expected points added · +1.4% completion over expected
Passing · BUF
12/19, 130 yds, 0 TD, 0 INT
-8.5 expected points added · -0.9% completion over expected
Receiving · CLE
4/4 for 38 yds, 0 TD
15% of team targets · 1.7 expected points added
Possession by possession
Drive chart
| # | Team | Start | Plays | Scrim yds | Clock | Result | |
|---|---|---|---|---|---|---|---|
| 1 | CLE | CLE 31 | 10 | 69 | 4:18 | Touchdown +7 | |
| 2 | BUF | BUF 20 | 7 | 80 | 2:55 | Touchdown +7 | |
| 3 | CLE | CLE 37 | 7 | 42 | 4:52 | Interception | |
| 4 | BUF | BUF 39 | 10 | 61 | 5:01 | Touchdown +6 | |
| 5 | CLE | CLE 29 | 14 | 65 | 7:16 | Field goal +3 | |
| 6 | BUF | BUF 32 | 9 | 68 | 3:15 | Touchdown +7 | |
| 7 | CLE | CLE 40 | 5 | -2 | 0:47 | Defensive touchdown | |
| 8 | BUF | BUF 14 | 4 | -12 | 1:30 | Punt | |
| 9 | CLE | BUF 30 | 2 | 0 | 0:06 | End of half | |
| 10 | BUF | BUF 30 | 5 | 8 | 2:14 | Punt | |
| 11 | CLE | CLE 20 | 4 | 12 | 2:07 | Interception | |
| 12 | BUF | CLE 25 | 4 | 2 | 1:02 | Field goal +3 | |
| 13 | CLE | CLE 33 | 16 | 67 | 8:01 | Touchdown +7 | |
| 14 | BUF | BUF 31 | 8 | 36 | 3:06 | Turnover on downs | |
| 15 | CLE | CLE 34 | 8 | 43 | 4:44 | Field goal +3 | |
| 16 | BUF | BUF 35 | 5 | -12 | 1:41 | Punt | |
| 17 | CLE | CLE 36 | 4 | -5 | 2:03 | Turnover on downs | |
| 18 | BUF | CLE 30 | 5 | 19 | 2:15 | Turnover on downs | |
| 19 | CLE | CLE 12 | 5 | 3 | 1:09 | Punt | |
| 20 | BUF | CLE 49 | 5 | 11 | 1:38 | End of game |
8 of 20 drives ended in points. Longest march: Bills gained 80 scrimmage yards over 7 plays for a touchdown.
Full stat lines
Box score
Buffalo Bills
Passing
| Player | C/Att | Yds | TD | INT | Sacked | EPA |
|---|---|---|---|---|---|---|
| Josh Allen | 12/19 | 130 | 0 | 0 | 2 | -8.5 |
Rushing
| Player | Att | Yds | Avg | TD | EPA |
|---|---|---|---|---|---|
| James Cook | 16 | 117 | 7.3 | 2 | 6.1 |
| Josh Allen | 7 | 17 | 2.4 | 0 | 0.9 |
| Ty Johnson | 3 | 16 | 5.3 | 1 | 2.2 |
| Ray Davis | 3 | 14 | 4.7 | 0 | 0.4 |
Receiving
| Player | Rec | Tgt | Yds | TD | Tgt share | EPA |
|---|---|---|---|---|---|---|
| Khalil Shakir | 4 | 5 | 34 | 0 | 28% | -1.5 |
| Jackson Hawes | 2 | 2 | 26 | 0 | 11% | 0.8 |
| Tyrell Shavers | 1 | 2 | 21 | 0 | 11% | -1.5 |
| Ray Davis | 2 | 2 | 20 | 0 | 11% | 1.7 |
| James Cook | 1 | 2 | 17 | 0 | 11% | 0.8 |
| Dawson Knox | 1 | 2 | 10 | 0 | 11% | -3.0 |
| Josh Palmer | 1 | 1 | 2 | 0 | 6% | -0.4 |
| Brandin Cooks | 0 | 1 | 0 | 0 | 6% | -0.7 |
| Dalton Kincaid | 0 | 1 | 0 | 0 | 6% | -0.5 |
Defense (top contributors)
| Player | Solo | Ast | Sacks | INT | PD |
|---|---|---|---|---|---|
| Jordan Poyer | 6 | 5 | 0.5 | 1 | 1 |
| Matt Milano | 4 | 5 | 0.0 | 0 | 0 |
| Cole Bishop | 5 | 2 | 0.0 | 0 | 0 |
| Terrel Bernard | 1 | 5 | 0.0 | 0 | 0 |
| Taron Johnson | 2 | 3 | 0.0 | 0 | 0 |
| Phidarian Mathis | 2 | 2 | 0.0 | 0 | 0 |
| Tre'Davious White | 2 | 2 | 0.0 | 0 | 1 |
| Andre Jones Jr. | 1 | 3 | 0.0 | 0 | 0 |
| DaQuan Jones | 2 | 2 | 0.0 | 1 | 1 |
| Dorian Williams | 1 | 3 | 0.0 | 0 | 0 |
Cleveland Browns
Passing
| Player | C/Att | Yds | TD | INT | Sacked | EPA |
|---|---|---|---|---|---|---|
| Shedeur Sanders | 20/29 | 157 | 1 | 2 | 2 | -11.7 |
| Corey Bojorquez | 0/1 | 0 | 0 | 0 | 0 | -1.8 |
Rushing
| Player | Att | Yds | Avg | TD | EPA |
|---|---|---|---|---|---|
| Shedeur Sanders | 4 | 49 | 12.3 | 0 | 5.1 |
| Raheim Sanders | 11 | 42 | 3.8 | 0 | 1.8 |
| Malachi Corley | 3 | 30 | 10.0 | 0 | 1.3 |
| Quinshon Judkins | 8 | 22 | 2.8 | 0 | -0.7 |
| Trayveon Williams | 3 | 17 | 5.7 | 0 | 1.5 |
| Harold Fannin Jr. | 1 | 1 | 1.0 | 1 | 0.7 |
| Isaiah Bond | 1 | -1 | -1.0 | 0 | -0.9 |
Receiving
| Player | Rec | Tgt | Yds | TD | Tgt share | EPA |
|---|---|---|---|---|---|---|
| Trayveon Williams | 4 | 4 | 38 | 0 | 15% | 1.7 |
| Harold Fannin Jr. | 4 | 6 | 34 | 1 | 22% | 0.5 |
| Quinshon Judkins | 5 | 6 | 29 | 0 | 22% | -3.3 |
| Jerry Jeudy | 3 | 4 | 12 | 0 | 15% | 2.3 |
| Malachi Corley | 2 | 4 | 11 | 0 | 15% | -5.1 |
| Cedric Tillman | 1 | 1 | 8 | 0 | 4% | -0.6 |
| Raheim Sanders | 1 | 1 | 4 | 0 | 4% | -0.1 |
| Brenden Bates | 0 | 1 | 0 | 0 | 4% | -1.0 |
Defense (top contributors)
| Player | Solo | Ast | Sacks | INT | PD |
|---|---|---|---|---|---|
| Carson Schwesinger | 5 | 9 | 1.0 | 0 | 0 |
| Devin Bush | 5 | 4 | 0.0 | 0 | 0 |
| Ronnie Hickman Jr. | 2 | 4 | 0.0 | 0 | 0 |
| Myles Harden | 3 | 1 | 0.0 | 0 | 1 |
| Mohamoud Diabate | 3 | 1 | 0.0 | 0 | 0 |
| Grant Delpit | 2 | 2 | 0.0 | 0 | 0 |
| Shelby Harris | 2 | 1 | 0.0 | 0 | 0 |
| Jerome Baker | 1 | 1 | 0.0 | 0 | 0 |
| D'Angelo Ross | 1 | 1 | 0.0 | 0 | 0 |
| Tyson Campbell | 2 | 0 | 0.0 | 0 | 0 |
Closing number vs result
Betting context
- Closing spread
- BUF -10.5
- Closing total
- 41.5
- BUF moneyline
- -575
- CLE moneyline
- +425
Bills closed -10.5, won by 3 — but didn't cover.
Total closed 41.5; the game landed 43 — over by 1.5.
Conditions and crew
Game environment
- Venue
- FirstEnergy Stadium
- Roof / surface
- outdoors · grass
- Kickoff weather
- 25°F, wind 16 mph
- Referee
- Bill Vinovich
- Rest
- BUF 7 days · CLE 7 days
- Coaches
- Sean McDermott vs Kevin Stefanski
Wind at 16 mph is the kind that drags passing depth and kicking range — weigh it when reading the splits.