1st | 2nd | 3rd | 4th | Tot | |
SF | 3 | 0 | 7 | 0 | 10 |
BUF | 7 | 14 | 7 | 7 | 35 |
One week after a 38-10 road loss to the Green Bay Packers that stood out as one of their ugliest defeats in years, the San Francisco 49ers put on a performance against the Buffalo Bills at Highmark Stadium in Orchard Park, New York on Sunday night that might have been even worse.
On a night where snow filled the air for all four quarters, the banged-up 49ers proved to be no match for a Super Bowl-contending Bills team that displayed a mastery of the conditions and their opponent in a 35-10 romp. The 49ers were dominated on both sides of the ball throughout the game and now find themselves in serious jeopardy of missing the postseason, less than a year after representing the NFC in the Super Bowl last February.
Brock Purdy started the game at quarterback for the 49ers after sitting out the previous week with an elbow injury, but his presence didn't make too much of a difference as he completed 11-of-18 passes for just 94 yards while losing a fumble. The Bills outgained the 49ers 372 to 239 on the evening, with 220 of those yards coming on the ground. Bills quarterback Josh Allen strengthened his MVP case by completing 13-of-17 passes for 148 yards and two touchdowns (one of those to himself) while adding a rushing touchdown before checking out of the game early in the fourth quarter.
First Half
The 49ers held the Bills to a three-and-out to start the game, then took over at their own 37 following the punt. After an 8-yard completion to start the drive, the 49ers rode four straight runs from running backs Christian McCaffrey and Jordan Mason to the Bills' 18-yard line. The drive stalled from there, forcing the 49ers to settle for a 33-yard field goal from kicker Jake Moody to take a 3-0 lead.
The Bills answered with a 13-play, 70-yard drive to take a 7-3 lead on a 5-yard touchdown run by running back Ray Davis. A third-down illegal contact penalty on the 49ers kept the drive from ending with a three-and-out, then with weather conditions continuing to deteriorate and players beginning to slip on the snowy Highmark Stadium turf, the Bills moved steadily downfield and took over seven minutes off the clock before Davis dove into the end zone to finish the drive.
Ray Davis takes it in for the TD! Time for snowballs in Buffalo ☃?
📺: #SFvsBUF on NBC/Peacock
— NFL (@NFL) December 2, 2024
📱: Stream on #NFLPlus pic.twitter.com/Mny7SZpama
McCaffrey led the 49ers downfield once again after the touchdown with runs of 12 and 18 yards and a reception for 12 yards. Then the drive fell apart, as after a Purdy interception was called back due to an illegal contact penalty on the Bills, McCaffrey fell to the turf on a first down run and hobbled to the sideline with an injury. A delay of game penalty put the 49ers in a 2nd-and-20, then after a 6-yard pass to Deebo Samuel and a 6-yard run from Mason, the 49ers attempted a 45-yard field goal from Moody, which sailed wide left and gave the Bills the ball at their own 35-yard line.
That did not look good for 49ers star RB Christian McCaffrey. #NFL #SNF pic.twitter.com/OZa3z6F9ck
— Awful Announcing (@awfulannouncing) December 2, 2024
The Bills struck immediately after the missed field goal with a 65-yard touchdown run from running back James Cook to take a 14-3 lead with just over eight minutes remaining in the half. Cook took the handoff and ran through a hole on the right side of the line, then outran the 49ers' defense down the sideline to the end zone.
James Cook heating things up for the @BuffaloBills 🔥
📺: #SFvsBUF on NBC/Peacock
— NFL (@NFL) December 2, 2024
📱: Stream on #NFLPlus pic.twitter.com/lsLx7rEiYK
With McCaffrey getting examined in the locker room, Mason took over at running back and quickly led the 49ers into Bills' territory, starting with a 28-yard run across the 50 followed by runs of four and six yards. But the 49ers were later driven back by a 5-yard sack of Purdy by defensive end Greg Rousseau, which forced them to punt with three-and-a-half minutes left in the second quarter.
The Bills took over at their own 3-yard line and moved to the 44-yard line on a 39-yard completion from Allen to tight end Dawson Knox. Runs from Cook of 18 and 11 yards moved the ball to the 27-yard line, then after a 6-yard catch by wide receiver Amari Cooper, Allen connected with Cook for a 13-yard gain to the 8-yard line. Three plays later, Allen found wide receiver Mack Hollins near the pylon for a touchdown and a 21-3 lead, capping a nine-play, 97-yard drive.
Josh Allen finds mad scientist Mack Hollins in the end zone! 🧑?🔬
📺: #SFvsBUF on NBC/Peacock
— NFL (@NFL) December 2, 2024
📱: Stream on #NFLPlus pic.twitter.com/OIRQ4Na3jH
The 49ers began the final drive of the half at their own 29-yard line and were able to move to the Bills' 37-yard line due in large part to an 11-yard run from Mason and a 17-yard completion from Purdy to Jennings. But with four seconds remaining in the half, Moody missed his second field goal of the game, this one falling short from 55 yards out.
The Bills ended the half with an edge of 238 to 166 in total yards and held a 21-3 lead despite the 49ers having a three-plus minute edge in time of possession. Cook finished the half with 100 yards on nine carries, while McCaffrey had 53 yards on seven carries before leaving the game and Mason had seven carries for 62 yards.
Second Half
The third quarter opened in a frustrating yet fitting fashion for the struggling 49ers. After a 60-yard kick return by Deebo Samuel put the 49ers at the Bills' 37-yard line, the 49ers moved into a 1st-and-Goal after three runs from Mason and a 14-yard completion to Jennings. But after an encroachment penalty on linebacker Von Miller gave the 49ers the ball at the 4-yard line, fullback Kyle Juszczyk took a handoff on the next play and fumbled just short of a touchdown, which led to a recovery and return by cornerback Christian Benford to the Bills' 48-yard line.
Bills force the fumble and recover the ball!! Chaos in Buffalo 😳
📺: #SFvsBUF on NBC/Peacock
— NFL (@NFL) December 2, 2024
📱: Stream on #NFLPlus pic.twitter.com/q3g5SWZaLr
The Bills were held to a three-and-out after the fumble return, which was followed by a 49ers three-and-out that put the Bills at the 49ers 44-yard-line following a punt return from Brandon Codrington. The Bills later moved into a 1st-and-Goal following an 18-yard completion on 4th-and-2 to wide receiver Khalil Shakir, then Allen and Cooper came up with one of the highlight plays of the NFL season. Allen threw a short pass to Cooper, who after juggling the ball and making the catch tossed the ball back to Allen, who ran in from nine yards out for a touchdown and a 28-3 lead.
WHAT THE?!?!?!?!
📺: #SFvsBUF on NBC/Peacock
— NFL (@NFL) December 2, 2024
📱: Stream on #NFLPlus pic.twitter.com/tO1I6KTQRM
The 49ers finally found the end zone on the next drive with another assist from Samuel, who set the offense up across midfield after a 42-yard kick return. A 26-yard completion to Jennings moved the ball inside the 20-yard line, then rookie running back Isaac Guerendo capped the drive with a 15-yard touchdown, his second of the season.
.@49ers TD 🙌 Rookie @isaacguerendo takes it to the house!
📺: #SFvsBUF on NBC/Peacock
— NFL (@NFL) December 2, 2024
📱: Stream on #NFLPlus pic.twitter.com/S7l9fCO7P8
After a three-and-out from the Bills, the 49ers took over at their own 23-yard line, then fumbled the ball back to the Bills when the ball slipped out of Purdy's hand during a third-down passing attempt. Rousseau recovered the fumble at the 25-yard line, then the Bills moved to the 7-yard line after a 17-yard completion to Knox. After Cook was stopped for a one-yard loss, Allen took off from the pocket and dashed through the snow for his second touchdown of the night and a 35-10 fourth quarter lead.
RUSHING TD FOR JOSH ALLEN 😱
📺: #SFvsBUF on NBC/Peacock
— NFL (@NFL) December 2, 2024
📱: Stream on #NFLPlus pic.twitter.com/a0ixskYpzs
A fumble from Samuel on the kickoff gave the ball right back to the Bills at the 49ers' 31-yard line. Then with Mitch Trusbisky in the game at quarterback, the Bills moved backward on a holding penalty, then got back to the 30-yard line before a field goal attempt from kicker Tyler Bass sailed wide left from 49 yards with just under 10 minutes left in the game.
The 49ers were held to a three-and-out after the missed field goal, then the Bills mercifully ended the game with an 11-play, 38-yard drive that took up all seven minutes and 55 seconds remaining on the game clock. The Bills moved to 10-2 on the season with the victory, while the 49ers fell to 5-7 with the loss. The 49ers currently sit two games behind the Seattle Seahawks in the NFC West with five games left to play.
Game Notes: Among the key 49ers players to sit out Sunday night's game due to injury were DE Nick Bosa (hip, oblique), CB Deommodore Lenoir (knee), LG Aaron Banks (concussion), and LT Trent Williams (ankle)... The Bills clinched a postseason berth and an AFC East title with the win... The Bills have won three straight against the 49ers and now hold an all-time lead of 8-6 in the series... The Bills were 6.5-point favorites coming into the game... With his third-quarter touchdown, Allen became the fourth player in NFL history to score a touchdown on a pass thrown by the same player. Allen also became the first quarterback to catch a touchdown, run for a touchdown, and pass for a touchdown in the same game... The 49ers will be back in action at home on Sunday, December 8 against the Chicago Bears (4:25 p.m. ET/1:25 p.m. PT, FOX).
SF | Team Stats | BUF |
86 | Passing Yards | 152 |
153 | Rushing Yards | 220 |
239 | Total Yards | 372 |
5.22 | Avg Yards per Pass | 8.44 |
5.67 | Avg Yards per Run | 5.79 |
3 | Fumbles Lost | 0 |
0 | Int Thrown | 0 |
2 | Sacks Allowed | 0 |
00:26:33 | Time of Pos | 00:33:27 |
2 | Penalties | 5 |
49ers Player Stats | ||||
Passing | Cmp/Att | Yds | TDs | INTs |
Brock Purdy | 11/18 | 94 | 0 | 0 |
Rushing | Att | Yds | Avg | TDs |
Jordan Mason | 13 | 78 | 6 | 0 |
Christian McCaffrey | 7 | 53 | 7.6 | 0 |
Isaac Guerendo | 4 | 19 | 4.8 | 1 |
Brock Purdy | 2 | 4 | 2 | 0 |
Kyle Juszczyk | 1 | -1 | -1 | 0 |
Receiving | Rec | Tgt | Yds | TDs |
Jauan Jennings | 3 | 5 | 56 | 0 |
Deebo Samuel | 4 | 5 | 20 | 0 |
Christian McCaffrey | 2 | 3 | 14 | 0 |
George Kittle | 1 | 2 | 7 | 0 |
Ricky Pearsall | 0 | 1 | 0 | 0 |
Isaac Guerendo | 1 | 1 | -3 | 0 |
Fumbles | Fum | Lost | ||
Kyle Juszczyk | 1 | 1 | ||
Deebo Samuel | 1 | 1 | ||
Brock Purdy | 1 | 1 | ||
Kicking | FG | Att | Lg | XP |
Jake Moody | 1 | 3 | 33 | 1 |
Punting | No | Avg | I20 | Lg |
Pat O'Donnell | 3 | 35.3 | 1 | 46 |
Punt Returns | Att | Avg | TDs | Lg |
Jacob Cowing | 2 | 12.5 | 0 | 13 |
Defense | T-A | Sck | INTs | FF |
Ji'Ayir Brown | 8-3 | 0 | 0 | 0 |
Renardo Green | 6-1 | 0 | 0 | 0 |
Malik Mustapha | 5-4 | 0 | 0 | 0 |
Charvarius Ward | 5-3 | 0 | 0 | 0 |
De'Vondre Campbell | 5-2 | 0 | 0 | 0 |
Yetur Gross-Matos | 4-2 | 0 | 0 | 0 |
Nick McCloud | 4-2 | 0 | 0 | 0 |
Dee Winters | 4-2 | 0 | 0 | 0 |
Evan Anderson | 4-2 | 0 | 0 | 0 |
Fred Warner | 4-1 | 0 | 0 | 0 |
Maliek Collins | 3-0 | 0 | 0 | 0 |
Khalil Davis | 2-2 | 0 | 0 | 0 |
Kalia Davis | 2-2 | 0 | 0 | 0 |
Leonard Floyd | 2-1 | 0 | 0 | 0 |
Sam Okuayinonu | 2-1 | 0 | 0 | 0 |
Jalen Graham | 1-1 | 0 | 0 | 0 |
Isaac Yiadom | 1-0 | 0 | 0 | 0 |
Kevin Givens | 1-0 | 0 | 0 | 0 |
Bills Player Stats | ||||
Passing | Cmp/Att | Yds | TDs | INTs |
Josh Allen | 13/17 | 148 | 2 | 0 |
Mitchell Trubisky | 1/1 | 4 | 0 | 0 |
Rushing | Att | Yds | Avg | TDs |
James Cook | 14 | 107 | 7.6 | 1 |
Ray Davis | 11 | 63 | 5.7 | 1 |
Ty Johnson | 5 | 28 | 5.6 | 0 |
Josh Allen | 3 | 18 | 6 | 1 |
Curtis Samuel | 1 | 7 | 7 | 0 |
Mitchell Trubisky | 4 | -3 | -0.7 | 0 |
Receiving | Rec | Tgt | Yds | TDs |
Dawson Knox | 2 | 2 | 56 | 0 |
Khalil Shakir | 4 | 7 | 30 | 0 |
Quintin Morris | 1 | 1 | 14 | 0 |
James Cook | 1 | 1 | 13 | 0 |
Amari Cooper | 3 | 3 | 12 | 0 |
Ty Johnson | 1 | 1 | 9 | 0 |
Mack Hollins | 1 | 1 | 7 | 1 |
Ray Davis | 1 | 1 | 4 | 0 |
Zach Davidson | 0 | 1 | 0 | 0 |
Kicking | FG | Att | Lg | XP |
Tyler Bass | 0 | 1 | 0 | 5 |
Punting | No | Avg | I20 | Lg |
Sam Martin | 3 | 38.3 | 1 | 54 |
Punt Returns | Att | Avg | TDs | Lg |
Brandon Codrington | 2 | 9 | 0 | 10 |
Defense | T-A | Sck | INTs | FF |
Terrel Bernard | 9-6 | 0 | 0 | 0 |
Taylor Rapp | 6-3 | 0 | 0 | 1 |
Taron Johnson | 6-2 | 0 | 0 | 0 |
Rasul Douglas | 5-2 | 0 | 0 | 0 |
Matt Milano | 5-2 | 0 | 0 | 0 |
Damar Hamlin | 5-0 | 0 | 0 | 0 |
Greg Rousseau | 4-0 | 1 | 0 | 0 |
DaQuan Jones | 3-2 | 0 | 0 | 0 |
Ed Oliver | 2-2 | 0 | 0 | 0 |
Quinton Jefferson | 2-1 | 0 | 0 | 0 |
A.J. Epenesa | 1-1 | 0 | 0 | 0 |
Christian Benford | 1-1 | 0 | 0 | 0 |
Von Miller | 1-0 | 0 | 0 | 0 |
Cam Lewis | 1-0 | 0 | 0 | 0 |
Casey Toohill | 1-0 | 0 | 0 | 0 |