Bills vs Vikings was never going to be pretty, and Buffalo didn’t need it to be. James Cook carried 31 times for 107 yards and a late touchdown, Josh Allen hit tight end Keleki Latu for a 25-yard score just before halftime, and the Buffalo Bills beat the Minnesota Vikings 23-6 on Monday night at U.S. Bank Stadium.
The win moved Buffalo to 7-1, its best eight-game start since 1993, according to the Associated Press, and kept the Bills on top of the AFC. Minnesota fell to 6-2 after a second straight loss and an offensive performance its own coach took the blame for.
How the Bills won without their usual fireworks
Buffalo came into the night leading the league in scoring. It left with 23 points, one offensive touchdown on the ground, one through the air, and three field goals from Tyler Bass. That was enough because the Bills simply kept the ball away from Minnesota.
Buffalo held possession for 42:32. The Vikings had it for 17:28. The tone was set early: the Bills ran 24 plays and held the ball for 12:27 in the first quarter alone, while Minnesota ran seven plays, per the team’s official recap.
It wasn’t all smooth. Allen was sacked four times by Brian Flores’ defense, which came in ranked No. 1 against the pass, and his best early drive ended in frustration. After converting three third downs, the Bills were pushed back by an intentional grounding penalty, and on third-and-23 Byron Murphy ran down a deep throw for D.J. Moore and intercepted it.
Buffalo’s response came late in the first half. With Allen rolling right behind good protection, Latu worked open in the scramble drill and caught a 25-yard touchdown with 44 seconds left. It was the first touchdown of his career, and the Bills led 10-3 before Will Reichard’s 53-yard field goal made it 10-6 at the break.
James Cook wore Minnesota down
The second half belonged to Cook. He didn’t have much room early, but Buffalo kept handing him the ball, and Minnesota’s defense, on the field for most of the night, started to give.
The decisive drive came in the fourth quarter: 15 plays, 84 yards and 8 minutes, 32 seconds, all season highs for Buffalo. Nine of those plays were Cook runs, and the last one was a 5-yard touchdown that made it 20-6 with 6:17 to play. Bass added a 52-yarder a short time later to finish the scoring.
Cook’s 31 carries were one short of his career high. After the game he called it “a bloody game” that Buffalo expected, according to the AP. He also hit a milestone on a third-quarter series, as he and Allen both went over 5,000 career rushing yards on the same possession. They are now the fourth and fifth players in Bills history to reach that mark.
Allen finished 21 of 31 for 234 yards with a touchdown and an interception, plus 15 rushing yards. It won’t help his MVP highlight reel, but the AP noted he now has 322 regular-season touchdowns, tying Peyton Manning for the most by a player in his first 10 seasons. Allen is only halfway through his ninth.
Buffalo’s defense took Carson Wentz apart
Starting for the injured Kyler Murray (hamstring), Carson Wentz had one of the worst nights of his 11-year career. He completed 8 of 25 passes for 81 yards with two interceptions and a lost fumble, and he went 1 of 8 in the second half before Max Brosmer replaced him midway through the fourth quarter. Wentz also checked into the medical tent at one point for what the AP described as an apparent lower leg injury.
Buffalo forced all three turnovers:
| Turnover | Bills player | What happened |
|---|---|---|
| Fumble recovery | Greg Rousseau | A first-quarter Wentz throw to Justin Jefferson was ruled a backward pass after Buffalo challenged; Rousseau had recovered |
| Interception | Dorian Williams | Picked off a Wentz pass meant for T.J. Hockenson early in the second half |
| Interception | Terrel Bernard | Picked off a Wentz pass over the middle for Jefferson |
Minnesota went 0 for 7 on third down and finished with 178 total yards. Four of its first-half drives started beyond its own 40-yard line, and none of them got past the Buffalo 48. Jefferson was targeted 11 times and caught three passes for 58 yards, 39 of them on the two-minute drive that produced Reichard’s second field goal.
The challenge on the backward pass deserves its own mention. Officials first ruled the play dead, and coach Joe Brady’s challenge flipped it, giving Buffalo the ball at the Minnesota 44 and setting up Bass’ first field goal. Brady told reporters there was “no panic early in the game,” per the AP.
Kevin O’Connell puts it on himself
Minnesota’s defense held the league’s highest-scoring offense to 23 points and still lost by 17. Vikings coach Kevin O’Connell didn’t hide from that. He said the loss was “100% on me” and that the offense has to improve “at a rapid pace,” according to the AP, and he blamed himself for not calling more runs. Jordan Mason and Aaron Jones combined for only 11 carries.
The timing is awkward for Minnesota. The NFL trade deadline is 4 p.m. ET Tuesday, Murray is week to week, and the Vikings have now scored 21 points in their last two games combined. Whether general manager Nolan Teasley adds anything at quarterback or running back before the deadline will shape the rest of this season. Minnesota’s loss also moved the Chicago Bears into first place in the NFC North by winning percentage.
Where Buffalo stands after Bills vs Vikings
At 7-1, the Bills keep the AFC’s No. 1 seed ahead of Denver (7-2), as our AFC playoff picture laid out before the game. They did it without left tackle Dion Dawkins (ribs) and left guard Alec Anderson (ankle), who were both inactive, which makes the four sacks easier to understand and the 107 rushing yards from Cook more impressive.
Not everything is fixed. The secondary questions that have followed Buffalo all season didn’t get tested much by an offense this broken, and the front office is still looking for help before the deadline. We covered the options in our look at the Bills’ safety trade targets.
Bills at Jets on a short week
Buffalo doesn’t have long to enjoy this one. The Bills visit the New York Jets at MetLife Stadium on Sunday, Nov. 15, at 1 p.m. ET for their second AFC East game of the season. The Jets are 2-7 and coming off a 35-12 loss in Kansas City, but a Monday-to-Sunday turnaround on the road is the kind of spot where contenders slip.
Minnesota’s week is harder. The Vikings travel to Green Bay on Sunday at 1 p.m. ET for a division game against a Packers team that just scored 45 points in New England, and O’Connell has six days to find an offense that can stay on the field.





Join the conversation