The Philadelphia Eagles did not complete a pass in the second half. They punted on five straight possessions, gained 17 yards across that stretch, and watched a 13-0 lead shrink to a single point. None of it cost them. Philadelphia held on to beat the Buffalo Bills 13-12 at Highmark Stadium on December 28, 2025, because Josh Allen’s two-point conversion throw with five seconds left sailed past an open Khalil Shakir, and because the defense in front of that miss had already done the heavy lifting.
The box score shows how Buffalo won nearly every statistical category and still walked off the loser. The Bills outgained the Eagles 331 yards to 190, ran 19 more plays, and held the ball for ten and a half extra minutes. Philadelphia answered with five sacks, one takeaway, and a blocked extra point that quietly decided the arithmetic. What follows is the complete set of player stats from that Week 17 meeting, broken down unit by unit.
Table of Contents
Final score
| Team | 1 | 2 | 3 | 4 | Final |
|---|---|---|---|---|---|
| Philadelphia Eagles | 7 | 6 | 0 | 0 | 13 |
| Buffalo Bills | 0 | 0 | 0 | 12 | 12 |
Every point Philadelphia scored came before halftime. Every point Buffalo scored came in the final 5:11.
| Qtr | Time | Team | Scoring play | PHI | BUF |
|---|---|---|---|---|---|
| 1 | 0:35 | PHI | Dallas Goedert 1-yard pass from Jalen Hurts (Jake Elliott kick) | 7 | 0 |
| 2 | 5:03 | PHI | Jake Elliott 47-yard field goal | 10 | 0 |
| 2 | 0:08 | PHI | Jake Elliott 28-yard field goal | 13 | 0 |
| 4 | 5:11 | BUF | Josh Allen 2-yard run (Michael Badgley kick blocked) | 13 | 6 |
| 4 | 0:05 | BUF | Josh Allen 1-yard run (two-point pass failed) | 13 | 12 |
Eagles vs Bills team stats
Buffalo finished ahead in total yards, first downs, third-down conversions, and possession time. Philadelphia’s edge came on the scoreboard and in the turnover margin, the two columns that decided the game.
| Stat | Philadelphia | Buffalo |
|---|---|---|
| First downs | 11 | 20 |
| Total yards | 190 | 331 |
| Total plays | 54 | 73 |
| Yards per play | 3.5 | 4.5 |
| Net passing yards | 108 | 211 |
| Completions/attempts | 13/27 | 23/35 |
| Sacked, yards lost | 1-2 | 5-51 |
| Rushing yards | 82 | 120 |
| Rushing attempts | 26 | 33 |
| Yards per carry | 3.2 | 3.6 |
| Third-down efficiency | 3/13 | 6/15 |
| Fourth-down efficiency | 0/0 | 2/3 |
| Red-zone touchdowns | 1/2 | 2/3 |
| Penalties, yards | 3-36 | 4-40 |
| Fumbles, lost | 0-0 | 2-1 |
| Turnovers | 0 | 1 |
| Time of possession | 24:45 | 35:15 |
Quarterback comparison: Jalen Hurts and Josh Allen
Allen threw for 152 more yards than Hurts and reached the end zone twice on the ground. Hurts protected the ball, took one sack to Allen’s five, and threw the only passing touchdown either team managed.
| Stat | Jalen Hurts | Josh Allen |
|---|---|---|
| Completions/attempts | 13/27 | 23/35 |
| Completion percentage | 48.1 | 65.7 |
| Passing yards | 110 | 262 |
| Yards per attempt | 4.1 | 7.5 |
| Passing touchdowns | 1 | 0 |
| Interceptions | 0 | 0 |
| Times sacked | 1 | 5 |
| Passer rating | 71.5 | 88.0 |
| Rushing yards | 5 | 27 |
| Rushing touchdowns | 0 | 2 |
Hurts completed all 13 of his attempts before halftime and missed on all seven he threw afterward.
Rushing
Saquon Barkley led all rushers with 68 yards on 19 carries. James Cook topped Buffalo with 74 yards on 20 carries, and Allen accounted for both of the game’s rushing touchdowns.
Philadelphia Eagles
| Player | Att | Yds | Avg | TD | Long |
|---|---|---|---|---|---|
| Saquon Barkley | 19 | 68 | 3.6 | 0 | 16 |
| Tank Bigsby | 2 | 7 | 3.5 | 0 | 5 |
| Jalen Hurts | 3 | 5 | 1.7 | 0 | 4 |
| Will Shipley | 2 | 2 | 1.0 | 0 | 4 |
| Team | 26 | 82 | 3.2 | 0 | 16 |
Buffalo Bills
| Player | Att | Yds | Avg | TD | Long |
|---|---|---|---|---|---|
| James Cook | 20 | 74 | 3.7 | 0 | 10 |
| Josh Allen | 7 | 27 | 3.9 | 2 | 17 |
| Ty Johnson | 5 | 15 | 3.0 | 0 | 8 |
| Ray Davis | 1 | 4 | 4.0 | 0 | 4 |
| Team | 33 | 120 | 3.6 | 2 | 17 |
Receiving
Brandin Cooks posted the only 100-yard receiving line of the day, 101 yards on four catches, including a 50-yard reception that stood as the longest play by either team. A.J. Brown paced Philadelphia with 68 yards on five grabs.
Philadelphia Eagles
| Player | Tgt | Rec | Yds | Avg | TD | Long |
|---|---|---|---|---|---|---|
| A.J. Brown | 7 | 5 | 68 | 13.6 | 0 | 27 |
| DeVonta Smith | 5 | 2 | 25 | 12.5 | 0 | 14 |
| Dallas Goedert | 6 | 3 | 8 | 2.7 | 1 | 4 |
| Darius Cooper | 1 | 1 | 4 | 4.0 | 0 | 4 |
| Grant Calcaterra | 1 | 1 | 3 | 3.0 | 0 | 3 |
| Tank Bigsby | 1 | 1 | 2 | 2.0 | 0 | 2 |
| Jahan Dotson | 1 | 0 | 0 | 0.0 | 0 | 0 |
| Team | 22 | 13 | 110 | 8.5 | 1 | 27 |
Buffalo Bills
| Player | Tgt | Rec | Yds | Avg | TD | Long |
|---|---|---|---|---|---|---|
| Brandin Cooks | 6 | 4 | 101 | 25.3 | 0 | 50 |
| Tyrell Shavers | 3 | 2 | 36 | 18.0 | 0 | 32 |
| Khalil Shakir | 7 | 6 | 35 | 5.8 | 0 | 13 |
| Ty Johnson | 4 | 3 | 33 | 11.0 | 0 | 21 |
| Dawson Knox | 5 | 5 | 30 | 6.0 | 0 | 15 |
| Joshua Palmer | 2 | 1 | 12 | 12.0 | 0 | 12 |
| Ray Davis | 1 | 1 | 12 | 12.0 | 0 | 12 |
| James Cook | 4 | 1 | 3 | 3.0 | 0 | 3 |
| Gabe Davis | 1 | 0 | 0 | 0.0 | 0 | 0 |
| Team | 33 | 23 | 262 | 11.4 | 0 | 50 |
Defense
Philadelphia recorded five sacks to Buffalo’s one. Jalyx Hunt had two of them and a team-high three quarterback hits, while Marcus Epps and Cooper DeJean tied for the team lead with nine tackles each.
Philadelphia Eagles
| Player | Tot | Solo | Sacks | TFL | PD | QB Hits |
|---|---|---|---|---|---|---|
| Marcus Epps | 9 | 8 | 0 | 1 | 0 | 0 |
| Cooper DeJean | 9 | 5 | 0 | 0 | 0 | 0 |
| Jalyx Hunt | 7 | 4 | 2.0 | 2 | 0 | 3 |
| Jihaad Campbell | 7 | 4 | 0 | 0 | 0 | 0 |
| Zack Baun | 6 | 6 | 0 | 1 | 0 | 0 |
| Jaelan Phillips | 6 | 3 | 1.0 | 1 | 0 | 0 |
| Reed Blankenship | 5 | 4 | 0 | 0 | 0 | 0 |
| Jordan Davis | 5 | 3 | 0 | 0 | 0 | 0 |
| Adoree’ Jackson | 5 | 2 | 0 | 0 | 2 | 0 |
| Quinyon Mitchell | 4 | 3 | 0 | 0 | 0 | 0 |
| Will Shipley | 3 | 2 | 0 | 0 | 0 | 0 |
| Moro Ojomo | 3 | 1 | 1.0 | 1 | 0 | 2 |
| Smael Mondon Jr. | 2 | 1 | 0 | 0 | 0 | 0 |
| Jalen Carter | 1 | 1 | 1.0 | 1 | 1 | 1 |
| Charley Hughlett | 1 | 1 | 0 | 0 | 0 | 0 |
| Kylen Granson | 1 | 0 | 0 | 0 | 0 | 0 |
| Sydney Brown | 1 | 0 | 0 | 0 | 0 | 0 |
| Nolan Smith Jr. | 1 | 0 | 0 | 0 | 0 | 0 |
| Byron Young | 1 | 0 | 0 | 0 | 0 | 0 |
| Team | 77 | 48 | 5.0 | 7 | 3 | 6 |
Jaelan Phillips forced the strip-sack that Jihaad Campbell recovered in the first quarter, Buffalo’s only lost fumble. Jalen Carter, back from a three-game absence with injuries to both shoulders, added a sack and blocked Michael Badgley’s extra point after Allen’s first touchdown run.
Buffalo Bills
| Player | Tot | Solo | Sacks | TFL | PD | QB Hits |
|---|---|---|---|---|---|---|
| Matt Milano | 7 | 4 | 0.5 | 1 | 0 | 1 |
| Cam Lewis | 5 | 4 | 0 | 0 | 0 | 0 |
| Shaq Thompson | 4 | 3 | 0 | 1 | 0 | 0 |
| Terrel Bernard | 3 | 3 | 0 | 0 | 0 | 0 |
| Christian Benford | 3 | 3 | 0 | 0 | 2 | 0 |
| Maxwell Hairston | 3 | 3 | 0 | 0 | 0 | 0 |
| Deone Walker | 3 | 2 | 0 | 1 | 0 | 0 |
| Greg Rousseau | 3 | 1 | 0.5 | 0 | 0 | 2 |
| Taron Johnson | 3 | 0 | 0 | 0 | 0 | 0 |
| Larry Ogunjobi | 2 | 2 | 0 | 0 | 0 | 0 |
| Cole Bishop | 2 | 2 | 0 | 0 | 0 | 0 |
| Joey Bosa | 2 | 1 | 0 | 1 | 0 | 0 |
| Phidarian Mathis | 2 | 0 | 0 | 0 | 0 | 0 |
| Dorian Williams | 2 | 0 | 0 | 0 | 0 | 0 |
| Reggie Gilliam | 1 | 1 | 0 | 0 | 0 | 0 |
| A.J. Epenesa | 1 | 1 | 0 | 0 | 0 | 1 |
| T.J. Sanders | 1 | 1 | 0 | 0 | 0 | 0 |
| Andre Jones Jr. | 1 | 0 | 0 | 0 | 0 | 0 |
| Keleki Latu | 1 | 0 | 0 | 0 | 0 | 0 |
| Tre’Davious White | 0 | 0 | 0 | 0 | 1 | 0 |
| Team | 49 | 31 | 1.0 | 4 | 3 | 4 |
Terrel Bernard left in the first half with a calf injury and did not return. Buffalo’s lone sack was split between Milano and Greg Rousseau.
Special teams
Jake Elliott went a perfect two-for-two on field goals, and Braden Mann flipped the field all afternoon with a 55.4-yard punting average. Ray Davis was Buffalo’s most productive returner, averaging 28 yards on three kickoff runbacks.
Kicking
| Player | FG | Long | XP | Points |
|---|---|---|---|---|
| Jake Elliott (PHI) | 2/2 | 47 | 1/1 | 7 |
| Michael Badgley (BUF) | 0/0 | 0 | 0/1 | 0 |
Punting
| Player | No | Yds | Avg | Long | TB | In 20 |
|---|---|---|---|---|---|---|
| Braden Mann (PHI) | 7 | 388 | 55.4 | 65 | 1 | 2 |
| Mitch Wishnowsky (BUF) | 6 | 262 | 43.7 | 49 | 1 | 3 |
Kick returns
| Player | No | Yds | Avg | Long | TD |
|---|---|---|---|---|---|
| Will Shipley (PHI) | 2 | 49 | 24.5 | 27 | 0 |
| Ray Davis (BUF) | 3 | 84 | 28.0 | 32 | 0 |
Punt returns
| Player | No | Yds | Avg | Long | TD |
|---|---|---|---|---|---|
| Britain Covey (PHI) | 1 | 8 | 8.0 | 8 | 0 |
| Khalil Shakir (BUF) | 3 | 50 | 16.7 | 28 | 0 |
Advanced and efficiency numbers
The efficiency data narrows the gap that the raw totals exaggerate. Both offenses finished underwater in expected points added per play, and Buffalo’s yardage edge leaned heavily on a handful of explosive throws.
| Metric | Eagles | Bills |
|---|---|---|
| Expected points added per play | -0.137 | -0.124 |
| Explosive passes (15-plus yards) | 2 | 4 |
| Explosive runs (10-plus yards) | 2 | 3 |
| Deep completions (20-plus yards) | 1 | 3 |
| Total pressures allowed | 19 | 21 |
| Average depth of target | 10.6 | 7.6 |
| Yards after the catch | 45 | 97 |
| Quarterback time to throw | 3.20s | 2.90s |
Cooks accounted for 101 of Buffalo’s 262 receiving yards on four receptions. The rest of the receiving corps combined for 161 yards on the other 19 catches.
Game information
- Date and kickoff: December 28, 2025, 4:25 p.m. ET
- Venue: Highmark Stadium, Orchard Park, New York
- Attendance: 71,105
- Conditions: 38 degrees, 94 percent humidity, wind 6 mph, steady rain on a turf surface
- Betting line: Buffalo -1.5, total 44 (stayed under)
- Referee: Ron Torbert
Milestones and standings
For all the yardage Buffalo piled up, the afternoon turned on plays that barely moved the chains. Allen’s 2-yard run in the fourth quarter was the 300th offensive touchdown of his career, reached in his 127th game, sooner than any player in league history and, at 29 years old, younger than anyone who had reached it. His 1-yard sneak with five seconds remaining pulled the Bills within a point. Then came the throw he could not take back.
Goedert’s 1-yard catch in the first quarter was the only touchdown Philadelphia’s offense produced all day, and it carried its own piece of history as his 11th of the season, a single-season record for an Eagles tight end that moved him past Pete Retzlaff’s 10 from 1965. The result lifted Philadelphia to 11-5 and secured no worse than the NFC’s third seed. Buffalo finished the day at the same 11-5 mark and a colder reality, slipping to the AFC’s seventh seed, its entire afternoon measured in the foot of open grass between Allen’s throw and Shakir’s hands.
Statistics compiled from the official NFL game book, Pro Football Reference, ESPN, and Pro Football Focus.

