ORCHARD PARK, N.Y. (AP) — Josh Allen threw two touchdown passes and ran for another — shrugging off aggravating an injury to his throwing shoulder — and the Buffalo Bills hung on to beat the Tampa Bay Buccaneers 24-18 on Thursday night.

After a week of questions about his “low-energy” approach and Buffalo’s slow-starting offense, Allen came through for the Bills (5-3), throwing for 324 yards on 31-of-40 passing. He had been listed on the Bills’ report with a right shoulder injury and was checked in the blue medical tent in the second quarter, but remained in the game.

Gabriel Davis had a career-best nine catches for 87 yards and a touchdown, and rookie tight end Dalton Kincaid scored his first career TD on a 22-yard catch.

Buffalo’s defense limited the Buccaneers’ Baker Mayfield-led attack to under 200 yards offense through three quarters and 302 overall. And Bills punter Sam Martin contributed by landing three punts inside Tampa Bay’s 10.

Mayfield tried to rally Tampa Bay (3-4) late. He threw a 24-yard touchdown pass to Mike Evans, followed by a 2-point conversion to Cade Otton with 2:44 remaining, to get the Buccaneers within six. But it took Tampa Bay 17 plays and 7:21 to march 92 yards for that score.

The game ended when Mayfield’s Hail Mary attempt from his own 45 fell between several players in the end zone. The Buccaneers have lost three straight and four of five since opening 2-0.

Buffalo built a 17-10 lead at halftime and never trailed. That was seven more points than the Bills had combined for in the first halves of their previous three games, two of which they lost.

Having a lead took the pressure off a defense missing three key starters.


Buccaneers: At Houston on Nov. 5.

Bills: At Cincinnati on Nov. 5. Last January on the road against the Bengals, Bills safety Damar Hamlin went into cardiac arrest and needed to be resuscitated on the field. The game was halted and eventually canceled. Hamlin has resumed playing but has only been active once this season.