Scott Galvin-USA TODAY Sports

Dustin Hopkins kicked a go-ahead, 29-yard field goal with 1:40 left in the game and the host Cleveland Browns spoiled the San Francisco 49ers' chance at a perfect season with a 19-17 victory on Sunday afternoon.

Jake Moody had a golden opportunity to allow San Francisco (5-1) to escape with a win, but he missed a 41-yard field-goal attempt wide right with six seconds to play.

Jordan Mason had put the 49ers ahead 17-13 when he rushed for an 8-yard touchdown with 10:58 remaining.

Hopkins made a 50-yard field goal just over seven minutes later to pull Cleveland (3-2) within one, and the Browns' defense followed by forcing a three-and-out to set up the game-winning drive.

Mason was in due to an oblique injury that forced star running back Christian McCaffrey out of the game in the third quarter. The 49ers also lost wide receiver Deebo Samuel, who exited the contest in the first quarter due to a shoulder injury.

Without those weapons, Brock Purdy struggled, completing just 12 of 27 passes for 125 yards with a touchdown and an interception. He took his first regular-season loss as a starter, falling to 10-1.

Brandon Aiyuk had four catches for 76 yards for San Francisco, which was held to 215 yards of total offense.

Cleveland quarterback P.J. Walker had 192 yards and two interceptions on 18-for-34 passing. Amari Cooper hauled in four receptions for 108 yards, while Jerome Ford totaled 84 yards on 17 carries.

After Moody made good on a 25-yard field goal to put the Niners up 10-0 with 7:54 left in the first half, Kareem Hunt put Cleveland on the board with a 16-yard rushing TD that made it a three-point game by the break.

Hopkins moved the Browns in front 13-10 with a pair of third-quarter field goals.

San Francisco moved 84 yards in just five plays on the game's opening drive, taking a 7-0 lead when Purdy found McCaffrey for a 13-yard touchdown.

More must-reads:

TODAY'S BEST
Rookie camp sheds light on Patriots' efforts to develop Drake Maye
First game of 2024 NFL season features rematch between two AFC powerhouses
Bronny James receives medical clearance, expected to remain in draft
Nuggets teach Timberwolves it's never easy to knock out the champion
Panthers come from behind to take Game 4 vs. Bruins
Hawks win 2024 NBA Draft Lottery
Watch: Padres star passes father on all-time home runs list
Terrion Arnold honors his mother in a unique way
Brad Keselowski breaks 110-race winless streak at Darlington
Watch: Manchester United ties record, highlighting club's ineptitude
Celtics' Jrue Holiday praises overlooked aspect of Jayson Tatum's game
Arturs Silovs' 42 saves lead Canucks past Oilers in Game 3
Braves star leaves game early due to left side soreness
Pacers blow out Knicks on Mother’s Day, even series at 2-2
Hawks GM 'shocked' that his team won the NBA Draft Lottery
Prolific former Brewers, A's slugger announces retirement
Saints to sign veteran offensive lineman
Smother's Day: Pacers shut down Knicks in first half of Game 4
Flyers goaltender suspended from international play for three years
Pistons make wrong kind of history at NBA Draft Lottery

Want more NFL news?

Join the hundreds of thousands of fans who start their day with Yardbarker's Morning Bark, the best newsletter in sports.