ORCHARD PARK, N.Y. (AP) -- Rookie cornerback Tre'Davious White forced and recovered a fumble to set up Stephen Hauschka's 30-yard field goal with 14 seconds remaining and the Buffalo Bills beat the Tampa Bay Buccaneers 30-27 Sunday.
LeSean McCoy had 91 yards rushing and scored twice including a 7-yard run to tie the score with 2:28 remaining. Tyrod Taylor went 20 of 33 for 268 yards and a touchdown, while Buffalo's defense forced three turnovers.
Coming out of its bye week, Buffalo improved to 4-2 under rookie head coach Sean McDermott. It marks just the fourth time the Bills have won at least four of their first six games during a 17-year playoff drought.
Jameis Winston showed no signs of a sprained throwing shoulder that sidelined him during the first drive of a 38-33 loss at Arizona last weekend. Winston finished 32 of 44 for 384 yards passing and three touchdowns. He threw an interception and also lost a fumble.
Rookie tight end O.J. Howard caught two touchdown passes for the Buccaneers (2-4), who have lost three straight.
A week after falling behind 31-0 to Arizona through three quarters, Tampa Bay was unable to hold a lead in the final minutes. The Buccaneers rallied from a 17-6 deficit to take a 27-20 lead with 3:14 left when Mike Evans scored on a 12-yard right-toe-dragging catch just inside the right sideline.
The Bills responded with a three-play drive capped by McCoy's touchdown run up the middle. Taylor keyed the drive with a 44-yard pass to newly signed receiver Deonte Thompson.
The game turned on the Buccaneers' first play from scrimmage on its possession.
Tampa Bay receiver Adam Humphries caught a pass and was running up the right sideline when he was stripped of the ball by White.
The Bills ran six plays before Hauschka hit his third of four field-goal attempts.
Taylor won by overcoming a fourth-quarter deficit for just the third time in his career. And he did it with an injury depleted group of receivers. Starting tight end Charles Clay is sidelined with a left knee injury, while receiver Jordan Matthews played sparingly in returning to action three weeks since breaking his right thumb.
Thompson led Buffalo with four catches for 107 yards. Buffalo signed Thompson on Tuesday, a week after he had been cut by Chicago.
McCoy, who also scored on a 1-yard run, ended a six-game scoreless drought that matched the longest of his career and dated to the final game of last season.
Hauschka tied an NFL record by making 12 consecutive field goals from 50 yards or longer by hitting a 52-yarder put Buffalo up 20-13 with 13:31 left in the fourth quarter. The record is shared by Blair Walsh, Robbie Gould, Justin Tucker and Matt Prater. The Bills signed Hauschka in free agency this offseason after he spent the previous six seasons in Seattle. He's not missed an attempt from beyond 50 yards since missing a 50- and 52-yarder in a 35-6 win over Arizona on Dec. 21, 2014.
DeSean Jackson made an acrobatic catch while also preventing an interception. Facing 2nd-and-6 at Buffalo's 46, Winston threw a pass over the middle that was initially picked off by E.J. Gaines, who had a step on Jackson. Jackson, however, punched the ball loose , turned and caught it for what led to a 14-yard gain.
Gaines did not return after hurting his hamstring injury midway through the third quarter. Gaines was hurt while attempting to defend Jackson on a deep pass up the left sideline. Jackson made the catch but the 60-yard catch was negated by a holding penalty against tackle Donovan Smith.
Buccaneers: Starting MLB Kwon Alexander returned after missing four games with a hamstring injury.
Bills: LT Cordy Glenn made his first start since Week 2 in recovering from an injury to his right ankle. OT Seantrel Henderson was inactive in his first game back since serving a 10-game NFL suspension for violating the league's substance abuse policy.
Buccaneers: Host Carolina Panthers on Oct. 29.
Bills: Host Oakland Raiders on Oct. 29.