DETROIT -- The Buffalo Bills dug out of their snowy homes and got their groove back in the Motor City.
Josh Allen threw a go-ahead, 5-yard touchdown pass to Stefon Diggs late in the first half and Buffalo beat the Cleveland Browns 31-23 on Sunday after the NFL moved the Bills' home game due to several feet of snow blanketing western New York.
“Back on track," Diggs said.
The Bills (7-3) avoided blowing a third straight halftime lead by scoring on all five of their possessions in the second half and doing a better job protecting the ball.
Perhaps escaping snow-packed homes — with the help of Bills employees, friends and strangers — will prove to be pivotal for a Super Bowl-contending team that was in a relative slump.
“When you go through a shared experience like this, it can bring a team closer together," coach Sean McDermott said.
Cleveland (3-7) rallied within eight points, setting up an onside kick in the final seconds that Bills receiver Gabe Davis failed to grab and running back Taiwan Jones knocked out of bounds.
“We’re in search of a win and which way we can get it,” coach Kevin Stefanski said. “I know these guys are putting in the effort. We just have to finish football games, and it’s really frustrating.”
Buffalo lost its raucous home-field advantage, but the team did its best to bring some of the sights and sound familiar at Highmark Stadium, such as a blaring train horn and calls for Bills Mafia to get loud at key moments.
Plenty of supporters from both fan bases attended, chanting “Let’s Go Buffalo!” and barking like dogs.
“It was a cool atmosphere," Bills safety Jordan Poyer said.
Buffalo, which will return to Detroit to play the Lions on Thanksgiving, started sluggish after a week disrupted by a winter storm.
“We easily could’ve folded and allowed it to be an excuse for us," Allen said.
The star quarterback threw some errant passes early before regaining his touch on an 11-play, 78-yard drive that took just 1 minute, 40 seconds and ended with Allen's first pass to Diggs.
“We got into a good rhythm," McDermott said. “We were a little bit off early."
The Bills scored a second-half touchdown for the first time in four games on Devin Singletary's 5-yard run. They also stopped Jacoby Brissett’s sneak on fourth-and-1 from the Buffalo 27 and blocked a field goal in the third quarter while building a 22-10 lead.
The Browns, who have lost six of seven games, missed many opportunities to get back on track with quarterback Deshaun Watson nearing the end of his 11-game NFL suspension.
Brissett finished 28 of 41 for 324 yards — two shy of his career high — and a season-high three touchdowns. He threw a 25-yard touchdown pass to Amari Cooper on the opening drive, a 7-yard touchdown scoring pass to Cooper with 4:11 left that pulled the Browns within 12 points and a 2-yard touchdown pass to Donovan Peoples Jones in the final minute.
The journeyman quarterback refuses to be discouraged by the team's slide.
“If anything, we fight harder," he said.
The Bills got a needed break when Brissett fumbled a snap midway through the second quarter at midfield. At that point, Buffalo was without a first down and was getting outgained 181 yards to 12 while trailing 10-3.
Allen was 18 of 27 for 197 yards with a touchdown and no turnovers. He threw six of his NFL-high 10 interceptions over the previous three games and fumbled a snap in the end zone during last week's collapse against Minnesota.
Bills running backs Singletary and James Cook each ran for 86 yards, taking pressure off Allen to make plays through the air.
MAKING A MARK
Buffalo kicker Tyler Bass made all six of his field goal attempts, tying his career high that matched Steve Christie's team record set in 1996.
Browns: Starting C Ethan Pocic (knee) went out early in game and was replaced by Hjalte Froholdt.
Bills: DE A.J. Epenesa (ankle) was hurt during the game.
Browns: Host Tampa Bay on Sunday.
Bills: Return to Ford Field to play the Lions on Thanksgiving.
AP NFL: https://apnews.com/hub/nfl and https://twitter.com/AP—NFL