A game that featured little action in the first half, heated up late.
Tre’Davious White intercepted Andy Dalton with 12 seconds remaining, allowing the Bills to hold on for a 21-17 victory.
Bengals kicker Randy Bullock hit a 43-yard field goal with 4:54 remaining, giving Cincinnati its first lead at 17-14.
But Josh Allen, who threw a costly second-half interception, rallied the Bills. He drove them 78 yards in seven plays, with Frank Gore scoring the winning touchdown on a 1-yard run with 1:50 left.
Dalton drove the Bengals to the Buffalo 28 but a pass was tipped by receiver Auden Tate, and White intercepted it to preserve the win. Bobby Hart was ejected following the play.
Dalton finished 20-of-36 for 249 yards with a touchdown and two interceptions, while Allen went 23-of-36 for 243 yards with a touchdown and an interception.