SANTA CLARA, Calif. (AP) – Brock Purdy and Russell Wilson led their teams to field goals on their only drives of the game and the San Francisco 49ers beat the Denver Broncos 21-20 on Saturday night on a field goal by rookie Jake Moody on the final play.

Moody, drafted in the third round, bounced back after missing two field goals last week and an extra point earlier in the game to convert the 32-yarder after Trey Lance drove the Niners down the field in the closing minutes.

Lance overcame an interception on his first drive to throw a 22-yard TD pass to Cameron Latu and then two big passes to Ronnie Bell to set up the winning kick. Lance finished 12 for 18 for 173 yards.

Purdy got his first game action since injuring his elbow in San Francisco’s NFC title game loss at Philadelphia. Purdy underwent surgery March 10 and made it back for training camp but didn’t play in the preseason opener at Las Vegas.

He looked good against the Broncos, throwing mostly short passes in his brief action. He went 4 for 5 for 65 yards – thanks in part to Deebo Samuel turning two short passes into long gains – but San Francisco (1-1) settled for a field goal after a sack in the red zone stalled the drive.

Wilson then came on and efficiently moved the Broncos (0-2) down the field on a 13-play drive that also ended in a field goal. After taking until his fourth drive last week to lead Denver to a score on a TD pass, Wilson looked sharper against a San Francisco defense that had most of its starters outside of holding out star edge rusher Nick Bosa.

Wilson completed 3 of 6 passes for 24 yards and also ran three times for 25 yards before turning the game over to Jarrett Stidham.

While Purdy has the starting spot solidified in San Francisco, Sam Darnold and Lance are battling to be the backups.

Darnold came in the game first and completed 11 of 14 passes for 109 yards. He had one pass intercepted that deflected off rookie receiver Ronnie Bell and ended his night with an 11-yard TD pass to undrafted rookie fullback Jack Colletto.


Broncos running back Javonte Williams got the start in his first game action since going down with a season-ending knee injury in Week 4 last year. Williams dropped a screen pass on his first snap but kept busy after that. He had 3 carries for 12 yards and four catches for 18 yards in two drives.


The 49ers lost two players in the first half to shoulder injuries with receiver Danny Gray leaving after getting hurt on the opening kick return and defensive lineman Kerry Hyder Jr. leaving in the second quarter.

Broncos WR Jalen Virgil left the game with a knee injury after getting hurt on a 50-yard catch on the final play of the first half. Virgil got tackled at the 1 and the clock ran out as Jarrett Stidham spiked the ball to try to set up a final play.


Broncos: Host the Rams in the preseason finale next Saturday night.

49ers: Conclude the preseason at home against the Chargers on Friday night.