Latest Posts:
Search for:

The Buffalo Bills escaped Cleveland with a 23–20 win on December 21, 2025, in a game that came down to a failed late field goal attempt by the Browns. Josh Cook carried the Bills’ offense on his back with 3 rushing touchdowns — two of which came in the second quarter to break the game open — while Cleveland’s two interceptions of Josh Allen kept them competitive deep into the fourth quarter. A Bills defense that forced 2 turnovers and delivered 3 sacks ultimately made the difference. Here is the full breakdown.


Final Score

Team Q1 Q2 Q3 Q4 Final
Buffalo Bills 7 13 3 0 23
Cleveland Browns 7 3 7 3 20

Scoring Plays

Q1 — 10:47 Sanders pass short right complete. Catch made by Hayden Fannin for 13 yards. TOUCHDOWN. Szmyt PAT good. (CLE 7 – BUF 0)

Q1 — 7:58 James Cook rushed right guard for 44 yards. TOUCHDOWN. Badgley PAT good. (CLE 7 – BUF 7)

Q2 — 12:57 Tyrone Johnson rushed up the middle for 2 yards. TOUCHDOWN. Badgley PAT no good. (CLE 7 – BUF 13)

Q2 — 5:41 Auston Szmyt 24-yard field goal. (CLE 10 – BUF 13)

Q2 — 2:27 James Cook rushed up the middle for 3 yards. TOUCHDOWN. Badgley PAT good. (CLE 10 – BUF 20)

Q3 — 9:41 Matt Badgley 41-yard field goal. (CLE 10 – BUF 23)

Q3 — 1:39 Hayden Fannin rushed up the middle for 1 yard. TOUCHDOWN. Szmyt PAT good. (CLE 17 – BUF 23)

Q4 — 8:50 Auston Szmyt 41-yard field goal. (CLE 20 – BUF 23)


Team Stats Comparison

Stat Buffalo Bills Cleveland Browns
Total Yards 259 294
Passing Yards 130 157
Rushing Yards 164 160
Plays 50 64
Avg Gain Per Play 5.2 4.6
Time of Possession 24:37 35:23
First Downs 16 22
Turnovers 0 2
Penalties 5 (35 yds) 5 (44 yds)
Sacks Allowed 2 3
Touchdowns 3 2
Field Goals 1/1 2/2

Buffalo Bills Offensive Stats

Passing

Josh Allen completed 12 of 19 passes for 130 yards, 0 touchdowns, and 0 interceptions, finishing with an 83.2 passer rating. He was sacked twice for 35 yards in losses and had 3 passes dropped by his receivers — had those been caught, the passing totals would look considerably different. Allen’s game was quiet through the air by his standards, but the Bills’ running game made it irrelevant on the night.

  • Completions/Attempts: 12/19
  • Completion %: 63.2%
  • Yards: 130
  • Touchdowns: 0
  • Interceptions: 0
  • Passer Rating: 83.2
  • Sacks Taken: 2 (35 yards)
  • Longest Pass: 21 yards
  • Net Passing Yards: 95
  • Dropped Passes: 3

Rushing

The Bills ran 29 times for 164 yards and 3 touchdowns — their most complete ground performance of the season to that point. James Cook was the engine, providing two explosive scoring plays including a 44-yard touchdown run in the first quarter that immediately answered Cleveland’s opening score. A second Cook touchdown in the second quarter pushed the lead to 20–10 and gave Buffalo enough cushion to hold on. The Bills averaged 5.655 yards per carry and recorded zero tackles for loss against them.

  • Attempts: 29
  • Yards: 164
  • Avg Per Carry: 5.655
  • Touchdowns: 3
  • Longest Run: 44 yards (TD — Cook)
  • Redzone Attempts: 6
  • Yards After Contact: 65
  • Tackles for Loss Allowed: 0

Receiving

Buffalo receivers caught 12 of 18 targets for 130 yards and 0 touchdowns. The passing game was functional rather than dominant — receivers averaged 10.8 yards per catch and gained 103 yards after the catch, showing the Bills were hitting short passes and letting their playmakers work in space. Three dropped passes hurt the efficiency numbers.

  • Targets: 18
  • Receptions: 12
  • Yards: 130
  • Avg Per Reception: 10.8
  • Touchdowns: 0
  • Yards After Catch: 103
  • Longest Reception: 21 yards
  • Dropped Passes: 3

Special Teams

Matt Badgley converted his one field goal attempt — a 41-yarder in the third quarter — and made 2 of 3 extra point attempts. The missed PAT after Tyrone Johnson’s second quarter touchdown kept the score closer than it could have been and added a touch of drama to the back end of the game.

  • Field Goals: 1/1 (41 yards)
  • Extra Points: 2/3 (1 missed)

Cleveland Browns Offensive Stats

Passing

The Browns’ quarterback completed 20 of 30 passes for 157 yards, 1 touchdown, and 2 interceptions, finishing with a 62.8 passer rating. The two interceptions were the decisive difference in the game — both came at moments when Cleveland was trying to build momentum, and Buffalo converted both into points. Three passes were batted at the line of scrimmage and the QB took 3 sacks for 23 yards, limiting Cleveland’s ability to generate big plays through the air.

  • Completions/Attempts: 20/30
  • Completion %: 66.7%
  • Yards: 157
  • Touchdowns: 1
  • Interceptions: 2
  • Passer Rating: 62.8
  • Sacks Taken: 3 (23 yards)
  • Longest Pass: 26 yards
  • Net Passing Yards: 134
  • Batted Passes: 3

Rushing

Cleveland ran 31 times for 160 yards and 1 touchdown — a strong ground effort that actually outperformed Buffalo on the ground in total yardage. Hayden Fannin scored Cleveland’s rushing touchdown in the third quarter to cut the deficit to 23–17. The Browns averaged 5.161 yards per carry and had 7 red zone rushing attempts, showing aggression near the goal line. Despite the yardage, the inability to punch it in consistently in short yardage situations cost Cleveland.

  • Attempts: 31
  • Yards: 160
  • Avg Per Carry: 5.161
  • Touchdowns: 1 (Fannin, 1 yard)
  • Longest Run: 16 yards
  • Redzone Attempts: 7
  • Yards After Contact: 89

Receiving

Cleveland receivers caught 20 of 27 targets for 157 yards and 1 touchdown. Hayden Fannin’s 13-yard touchdown reception opened the scoring in the first quarter. Receivers combined for 142 yards after the catch — the highest of any unit in the game — showing Cleveland’s offense was designed around short, quick throws that relied on yards after contact. The 15 air yards on all completions confirms a scheme built around getting the ball out fast and letting skill players work.

  • Targets: 27
  • Receptions: 20
  • Yards: 157
  • Avg Per Reception: 7.9
  • Touchdowns: 1 (Fannin, 13 yards)
  • Yards After Catch: 142
  • Longest Reception: 26 yards
  • Air Yards: 15 (entire game)

Special Teams

Auston Szmyt went a perfect 2-for-2 on field goals — 24 yards in the second quarter and 41 yards in the fourth — and made 2 of 3 extra points. Cleveland’s final field goal with 8:50 left in the fourth cut the deficit to 23–20, which is where the score stayed to the end.

  • Field Goals: 2/2 (24 yards, 41 yards — both made)
  • Extra Points: 2/3 (1 missed)

Buffalo Bills Defensive Stats

Buffalo’s defense was the difference maker. The unit intercepted Cleveland’s quarterback twice, recorded 3 sacks, generated 11 QB hits and 5 tackles for loss, and batted 3 passes at the line of scrimmage. The 2 interceptions were returned for a combined 11 yards and directly disrupted Cleveland’s two most threatening drives of the game. Cleveland managed only 1 three-and-out against the Bills’ defense but Buffalo’s turnover production compensated for the lack of stops.

  • Total Tackles: 32 solo, 40 assists (72 combined)
  • Sacks: 3 (for 23 yards)
  • QB Hits: 11
  • Tackles for Loss: 5 (for 29 yards)
  • Interceptions: 2 (11 return yards)
  • Passes Defended: 6
  • Batted Passes: 3
  • Three-and-Outs Forced: 1
  • Fourth Down Stops: 1
  • Missed Tackles: 6

Cleveland Browns Defensive Stats

Cleveland’s defense held Buffalo to just 259 total yards and forced 2 sacks — including a 35-yard sack total that significantly limited Buffalo’s net passing production. The unit forced 3 three-and-outs and recorded 5 QB hits, keeping the Bills’ passing game largely in check. The Browns could not generate a turnover on their own, however, and their inability to get off the field when it mattered in the second quarter allowed Buffalo to build a 13-point lead.

  • Total Tackles: 25 solo, 26 assists (51 combined)
  • Sacks: 2 (for 35 yards)
  • QB Hits: 5
  • Tackles for Loss: 1 (for 13 yards)
  • Interceptions: 0
  • Passes Defended: 1
  • Three-and-Outs Forced: 3
  • Fourth Down Stops: 2
  • Missed Tackles: 4

Key Takeaways

  • Buffalo Bills defeated the Cleveland Browns 23–20 on December 21, 2025, in a game where James Cook’s 3 rushing touchdowns — including a 44-yard score — provided the winning margin despite a muted passing game from Josh Allen.
  • James Cook’s 44-yard rushing touchdown in the first quarter immediately answered Cleveland’s opening score and set the physical tone Buffalo maintained throughout the game on the ground.
  • Cook’s second touchdown in the second quarter with 2:27 remaining pushed the Bills to 20–10 — the decisive score of the game that Cleveland spent the second half chasing.
  • Cleveland’s quarterback threw 2 interceptions against 1 touchdown, finishing with a 62.8 passer rating in a game where the turnovers proved more costly than any other single factor.
  • Buffalo’s defense intercepted Cleveland twice, generated 3 sacks, batted 3 passes at the line of scrimmage, and recorded 11 QB hits — a multi-faceted pressure performance that disrupted Cleveland’s rhythm consistently.
  • Cleveland dominated time of possession 35:23 to 24:37 and accumulated more total yards (294 to 259) but still lost — a reminder that efficiency and turnovers matter more than possession time when the margins are this tight.
  • Hayden Fannin scored both of Cleveland’s touchdowns — a 13-yard reception in the first quarter and a 1-yard rushing score in the third — as the Browns’ most impactful offensive player on the day.
  • Matt Badgley missed one extra point after Tyrone Johnson’s second quarter touchdown, leaving 1 point on the board that became significant as Cleveland cut the deficit to 3 in the fourth.
  • Auston Szmyt was perfect for Cleveland, making both field goal attempts including the 41-yarder in the fourth quarter that brought the Browns within 3 — but no further scoring opportunity materialized.
  • Buffalo’s running game recorded zero tackles for loss on 29 carries — a dominance at the line of scrimmage that gave the Bills a sustainable game plan even when Allen’s passing production was below his usual standard.