Now they're eliminated from the playoff race after their sixth straight loss, 37-10 to the San Diego Chargers on Sunday.
Coach Chan Gailey paused for a moment when asked if the Bills are demoralized.
"I hate to admit that," he said. "I hate to say that's it. I want to say if we'll go execute with the players that we've got, I think we can be a respectable football team. I don't know if we can be good right now but we can be respectable."
Philip Rivers threw three touchdown passes, two to Antonio Gates, for the Chargers (6-7), who have won two straight following their six-game losing streak. Minutes after the Chargers game ended, Denver beat Chicago in overtime to improve to 8-5 atop the AFC West.
Buffalo (5-8) won't make the playoffs for the 12th straight year.
The Bills, like the Chargers, started the season 4-1. They were 5-2 after a 23-0 victory against Washington on Oct. 30 and haven't won since.
So what's happened?
"I promise you if I knew that I would tell you and do something about it," Gailey said. "I'm sure it's a combination of a lot of things. We're not doing the things offensively that we were being very consistent with in the first seven weeks of the season. It's my responsibility to find the answer, but I don't have it today."
In this matchup of desperate teams, the Chargers took control early and never let up.
Rivers was 24 of 33 for 240 yards. Ryan Mathews gained 114 yards on 20 carries, the first time he's had three straight 100-yard games.
The Bills made it a game when Rivers fumbled while going back to pass early in the third quarter. The ball rolled into the end zone and Bryan Scott shoved aside the QB to recover for a touchdown that pulled the Bills to 16-10.
San Diego regained the momentum with the fake punt on the next drive. With the Chargers in punt formation at their 32, safety Eric Weddle, the up-back, took the snap and ran 10 yards for a first down. Vincent Jackson had consecutive catches of 16, 17 and 13 yards. Rivers scrambled for 9 yards and an apparent TD, but it came back on a holding call against right tackle Jeromey Clary. Three plays later, Gates broke free in the end zone for a 2-yard scoring catch.
On Buffalo's first play from scrimmage, Steve Gregory intercepted Ryan Fitzpatrick and returned it 26 yards for a 30-10 lead.
Rivers also threw a 26-yard scoring pass to Patrick Crayton.
Fitzpatrick was 13 of 34 for 176 and two interceptions.
The Chargers scored on their first three drives. Rivers was 6 for 6 for 63 yards on the opening possession, including a 9-yard TD pass to Gates.
Weddle intercepted Fitzpatrick when the ball bounced of the back of linebacker Na'il Diggs and returned it 26 yards to the San Diego 45, Rivers completed two more passes for 20 yards and Mike Tolbert finished the drive with a 1-yard run. The PAT was blocked and San Diego lead 13-0.
"He's always trying to make a play and he makes them a lot of times the first part of the year," Gailey said of his QB. "Now that ball is getting tipped up and caught by the other team. At times he misses some things he hit earlier in the season."
Mathews' 37-yard burst up the middle on the next drive set up Nick Novak's 47-yard field goal for a 16-0 lead that held up at halftime.
The Bills had an impressive drive to open the second half, including Stevie Johnson's 53-yard catch-and-run, to reach the Chargers' 9-yard line. But two incompletions by Fitzpatrick and a sack by Antwan Barnes forced the Bills to settle for Dave Rayner's 37-yard field goal.
Notes: Gates became the 27th player in NFL history with 75 touchdown catches. He's within five catches of overtaking Hall of Famer Charlie Joiner, the team's receivers coach, for all-time receptions (586). ... Rivers' lost fumble was his fifth, giving him an NFL-high 22 turnovers. ... Fitzpatrick set a career high with 3,013 yards passing, making him the second Bills QB with consecutive 3,000-yard seasons (Jim Kelly 1988-89, 1991-95).