A quiet start gave way to a sharp finish
For much of the afternoon, this game moved at a field-goal pace. Wil Lutz put Denver ahead 3-0 with a 52-yarder at 1:43 of the first quarter, and that stood until Eddy Pineiro answered from 24 yards with 1:36 left in the second. At halftime, the teams were level at 3-3, with neither side having found much room for a clean break.
San Francisco finally seized control late in the third quarter. Purdy found Deebo Samuel Sr. for a 1-yard touchdown at 4:15, the 49ers’ first trip to the end zone and a 10-3 lead. Denver trimmed that to 10-6 on Lutz’s 40-yard field goal early in the fourth, but Christian McCaffrey restored breathing room with a 1-yard rushing touchdown at 8:52.
The Broncos still made one serious push. Bo Nix connected with Jaylen Waddle for a 13-yard touchdown with 4:05 remaining, and Tyler Badie’s two-point conversion run cut the margin to 17-14. That set up the game’s decisive sequence: San Francisco needed only 1:50 to answer, and Purdy found Kittle behind the defence for the 56-yard strike that settled it at 24-14.
Purdy kept it efficient, and Kittle supplied the knockout
Purdy’s line was compact and decisive: 19 completions on 30 attempts for 218 yards, two touchdowns, no interceptions and a 107.4 passer rating. Just as important, San Francisco did not give the ball away and did not allow a sack. In a game where both offences ran 64 plays, that clean handling gave the 49ers a sturdier base than Denver managed.
Kittle’s four catches produced 70 yards, and more than three-quarters of that total came on the late touchdown that broke Denver’s comeback attempt. Mike Evans led San Francisco with five receptions for 76 yards, while Samuel contributed in several ways, catching five passes for 26 yards and a touchdown and adding 44 rushing yards on only three carries. McCaffrey’s numbers were workmanlike rather than explosive, but his 15 carries, 52 yards and goal-line touchdown mattered in the places where the game turned.
The 49ers’ broader offensive profile fit the result. They finished with 359 total yards, 141 on the ground and 20 first downs, while averaging 5.6 yards per play. Denver’s defence kept contact for a long stretch, led by Alex Singleton’s 14 tackles and Brandon Jones’ nine, but San Francisco still found the larger chunks that decided the afternoon.
Our take: San Francisco’s cleaner game made the difference
This result was not built on overwhelming volume. Denver actually matched San Francisco in total plays and held the ball slightly longer, but the sharper team was San Francisco. The 49ers committed only one penalty for five yards and finished without a turnover. Denver was flagged seven times for 44 yards and lost a fumble. In a 10-point game, that contrast is hard to ignore.
The Broncos had useful individual performances, especially from Nix and RJ Harvey. Nix completed 25 of 42 passes for 214 yards and a touchdown without an interception, while Harvey caught 10 passes for 68 yards and added 25 more on seven rushing attempts. Waddle provided Denver’s only touchdown catch, and Pat Bryant supplied a 30-yard gain as part of a three-catch, 47-yard day. Still, the offence rarely created big chunks. Denver averaged 5.1 yards per pass attempt, rushed for 82 yards as a team, and did not get a run longer than nine yards from its backfield. That helps explain why the rally arrived late instead of shaping the full game.
There is one cautionary note for San Francisco despite the win. A 3-3 halftime score, a 2-for-3 day in the red zone and Pineiro’s 1-for-2 field-goal line all show there was room to finish earlier and more cleanly. But the 49ers earned the right to survive those loose ends because their best players converted the defining moments. Purdy managed the game, McCaffrey finished one drive from the 1-yard line, and Kittle delivered the play Denver could not match.
Scoring moments
- Period 1 · 1:43
Wil Lutz 52 Yd Field Goal
- Period 2 · 1:36
Eddy Pineiro 24 Yd Field Goal
- Period 3 · 4:15
Deebo Samuel Sr. 1 Yd pass from Brock Purdy (Eddy Pineiro Kick)
- Period 4 · 14:08
Wil Lutz 40 Yd Field Goal
- Period 4 · 8:52
Christian McCaffrey 1 Yd Rush (Eddy Pineiro Kick)
- Period 4 · 4:05
Jaylen Waddle 13 Yd pass from Bo Nix (Tyler Badie Run for Two-Point Conversion)
- Period 4 · 2:15
George Kittle 56 Yd pass from Brock Purdy (Eddy Pineiro Kick)
Denver Broncos — Passing
Denver Broncos — Rushing
Denver Broncos — Receiving
Denver Broncos — Fumbles
Denver Broncos — Defensive
Denver Broncos — KickReturns
Denver Broncos — PuntReturns
Denver Broncos — Kicking
Denver Broncos — Punting
San Francisco 49ers — Passing
San Francisco 49ers — Rushing
San Francisco 49ers — Receiving
San Francisco 49ers — Fumbles
San Francisco 49ers — Defensive
San Francisco 49ers — KickReturns
San Francisco 49ers — Kicking
San Francisco 49ers — Punting
Denver Broncos — Team statistics
San Francisco 49ers — Team statistics