James Cook rushed for a season-high 111 yards and two touchdowns as the Buffalo Bills defeated the host Seattle Seahawks 31-10 in a matchup of division leaders on a sloppy Sunday afternoon. Josh Allen completed 24 of 34 passes for 283 yards and two scores for the AFC East-leading Bills (6-2), who won their third game in a row. Khalil Shakir grabbed a career-high nine receptions for 107 yards.

The NFC West-leading Seahawks (4-4), who lost for the fourth time in their past five games, managed just 233 yards of total offense without leading receiver DK Metcalf, who suffered a sprained medial collateral ligament last week at Atlanta. Geno Smith completed 21 of 29 passes for 212 yards with an interception. The teams combined for 24 penalties, the most in a game in the NFL this season.

Leading 14-3 at the half, the Bills marched inside Seattle's 10-yard line on their opening possession of the third quarter before Tyler Bass kicked a 27-yard field goal. Buffalo defensive lineman Austin Johnson intercepted a tipped pass on Seattle's next drive, which led to Cook's 2-yard touchdown run with 1:57 left in the third to make it 24-3. Cook scored on a 7-yard run with 11:19 remaining.

Seattle's only touchdown came on a 1-yard run by Zach Charbonnet with 8:02 to go. The Bills opened the scoring on a 2-yard pass from Allen to Keon Coleman with 4:51 left in the first quarter. That capped a 14-play, 90-yard drive.

The Seahawks, who went three-and-out on their first two possessions, then put tog.