This was the kind of finish Cleveland has been craving.
The win snapped Cleveland's four-game losing streak and moved the team to 3-6 on the season. Buffalo fell to 6-3.
Mayfield became the first quarterback to throw for two touchdowns against the Bills this season, finishing 26-of-38 for 238 yards and the two scores. Jarvis Landry caught the first and finished with nine receptions for 97 yards.
In their first game together, Nick Chubb and Kareem Hunt carried the Browns on the ground and through the air. Chubb finished with 116 yards — his fourth 100-yard game of the season — while Hunt, who served an eight-game suspension to start the season, added 30 on the ground and 44 through the air on seven receptions in his first game in nearly a year.
Holding a 12-9 lead with 6:29 to play, Cleveland's defense, which delivered a number of big stops — including two on fourth down inside its own territory — faced third-and-10 from the 11. Bills quarterback Josh Allen sprinted toward the end zone and lost control of the ball at the 8-yard line. The ball tumbled forward and was ultimately snatched up by Bills guard Jon Feliciano at the 1-yard line. Two plays later, Allen scored his second rushing touchdown of the game to give Buffalo the 16-12 advantage.
The Browns got the ball back with a little more than 5 minutes to play and promptly dodged a major bullet before marching down the field. A Mayfield flip to Hunt that was dropped and run back for a Buffalo touchdown was initially called a fumble. A review of the play showed it was an incomplete pass, and the Browns lived to play another down.
A 21-yard run by Chubb got Cleveland inside Bills territory and a 24-yard catch by Landry set the Browns up inside the 10. After Chubb was stuffed for no gain, Mayfield found a wide open Higgins for the go-ahead score.
The Browns defense bent but didn't break one last time on the Bills' last gasp possession. Buffalo moved to Cleveland's 37-yard line but was stuffed on third down to force a game-tying field goal attempt. Stephen Hauschka's attempt from 52 was well short, and Cleveland escaped with its first win of the season at FirstEnergy Stadium.
Check out photos of the Browns in action against the Buffalo Bills on Sunday
Allen paced the Bills with 266 yards through the air and 28 on the ground. Devin Singletary ran for 42 yards for a Bills offense that had just 84 on the ground compared to Cleveland's 147.
The Bills evened the score, 9-9, on the Browns' first offensive play of the second half, when an unblocked Tremaine Edmunds dropped Mayfield for a sack deep inside the end zone for a safety, the second Cleveland has surrendered on the season.
Austin Seibert's 47-yard field goal with 3:49 left in the third quarter capped a 10-play, 56-yard drive and put Cleveland back on top, 12-9.
The Browns came out of the gate firing and marched down the field for their third opening-drive touchdown in four home games. A big Chubb run got Cleveland rolling, and Mayfield found Landry three times, the last of which going for 17 yards and a touchdown.
Cleveland's opportunity to extend the lead to double digits midway through the first quarter symbolized the team's season-long frustrations inside the red zone. The Browns ran eight plays from the 1- or 2-yard line and couldn't get it across the goal line despite inducing multiple Bills penalties on pass attempts to Odell Beckham Jr. Chubb's failed run on fourth-and-goal gave Buffalo the ball and a boost of momentum it'd carry into the second quarter.
The Browns outgained the Bills, 141-12 and had the ball for 11:49 in the first quarter but could only build the lead to 6-0.
The Bills took the lead 5 minutes into the second quarter when Allen took a keeper 10 yards in for a score, his ninth of the season on the ground.
The Browns got back on top, 9-7, on a short Seibert field goal that came after another flurry of struggles inside the 5-yard line. The lead remained in place after Hauschka missed a 34-yard field goal with 20 seconds left in the half.
The Browns are back in action Thursday night when they host the Steelers in the primetime matchup.