HOUSTON, TX - The San Francisco 49ers absorbed two early punches, then authored a composed fourth-quarter rally to beat the Houston Texans 24-21 and bounce back from last week's loss. "We talked all week about poise," head coach Jeff Jarin said. "Down 14-0 at halftime, nobody blinked. Our defense sparked it, and the offense finished it."
How it happened
Houston controlled the first half behind C.J. Stroud, who opened the scoring with a short TD to tight end Cade Stover and later kept one himself at the goal line for a 14-0 lead. "We had rhythm early, but we didn't sustain it," Stroud said.
San Francisco's defense flipped the game after halftime. Linebacker Fred Warner shot through for a safety-the 49ers' first points of the day. "We needed a spark-any spark," Warner said. "That two felt like seven." A few minutes later, Brock Purdy found Jauan Jennings for a short touchdown to pull within 14-9.
The fourth-quarter swing
Purdy kept attacking in the fourth. He drilled a 17-yard strike to Ricky Pearsall, then hit the two-point try to Jennings to give San Francisco its first lead, 17-14. "Coach dialed up a great call-Ricky's route held the safety-and Jauan finished the two," Purdy said.
Houston answered, with Dameon Pierce punching in a short run to restore a 21-17 lead. "We've got to close it out from there," Stroud said. "Credit to them."
That set up the final march. Christian McCaffrey-steady all night-finished the drive with a late go-ahead 3-yard score, and the 49ers defense closed it out from there. "O-line moved people in crunch time," McCaffrey said. "That's our identity."
Numbers that mattered
Purdy delivered a resilient line-28 of 40 for 268 yards, two touchdowns and two interceptions-while navigating a hot Texans rush. "I forced a couple, but the guys kept me up," he said.
McCaffrey powered the ground game with 20 carries for 138 yards and the winner, plus nine receptions for 46 yards. Tight end George Kittle was Purdy's safety valve, catching 10 passes for 122 yards. "George owned the seams," Jarin said.
On defense, Deommodore Lenoir grabbed a key interception, and Warner was credited with the third-quarter safety. For Houston, Jalen Pitre picked off two passes and Danielle Hunter registered three sacks. In the passing game, Christian Kirk, Jayden Higgins, and Nico Collins shared the workload for Stroud.
Team-wise, the 49ers owned a 413-361 edge in offensive yards, converted 6 of 12 on third down, and finished 3-for-6 in the red zone; the Texans were 6 of 9 and 3-for-3, respectively. San Francisco's successful two-point play during the rally changed the late-game math. "That one play swung momentum," Jarin said.
Up Next
The 49ers travel to face the New York Giants in Week 9, while the Texans host the Denver Broncos in Week 9.
Stats
Passing
San Francisco 49ers
Player |
qbr |
com/att |
pct |
yds |
lng |
td |
int |
sck |
|---|---|---|---|---|---|---|---|---|
| B.Purdy #13 | 84.1 | 28 / 40 | 70.0 | 268 | 44 | 2 | 2 | 2 |
| J.Watkins #17 | 0.0 | 1 / 0 | 0.0 | 0 | 0 | 0 | 0 | 0 |
| TEAM | - | 29 / 40 | 72.5 | 268 | 44 | 2 | 2 | 2 |
Rushing
San Francisco 49ers
Player |
att |
yds |
lng |
td |
avg |
big |
yac |
|---|---|---|---|---|---|---|---|
| C.McCaffrey #23 | 20 | 138 | 48 | 1 | 6.9 | 1 | 28 |
| B.Purdy #13 | 3 | 19 | 10 | 0 | 6.3 | 0 | 1 |
| B.Robinson Jr #3 | 3 | 14 | 10 | 0 | 4.7 | 0 | 6 |
| K.Juszczyk #44 | 1 | 0 | 0 | 0 | 0.0 | 0 | 0 |
| G.Kittle #85 | 0 | 0 | 0 | 0 | 0.0 | 0 | 0 |
| TEAM | 27 | 171 | 48 | 1 | 6.3 | 1 | 35 |
Receiving
San Francisco 49ers
Player |
rec |
yds |
avg |
td |
yac |
lng |
drop |
|---|---|---|---|---|---|---|---|
| G.Kittle #85 | 10 | 122 | 12.2 | 0 | 46 | 21 | 0 |
| R.Pearsall #1 | 3 | 66 | 22.0 | 1 | 10 | 44 | 0 |
| C.McCaffrey #23 | 9 | 46 | 5.1 | 0 | 72 | 31 | 0 |
| S.Moore #9 | 3 | 23 | 7.7 | 0 | 21 | 13 | 0 |
| J.Jennings #15 | 2 | 10 | 5.0 | 1 | 0 | 9 | 0 |
| J.Watkins #17 | 1 | 1 | 1.0 | 0 | 5 | 1 | 0 |
| TEAM | 28 | 268 | 9.6 | 2 | 154 | 44 | 0 |
Defense
San Francisco 49ers
Player |
tckl |
sck |
pdef |
int |
int yds |
td |
ff |
ffr |
|---|---|---|---|---|---|---|---|---|
| J.Pinnock #25 | 2 | 0.0 | 1 | 0 | 0 | 0 | 0 | 0 |
| R.Green #0 | 1 | 0.0 | 1 | 0 | 0 | 0 | 0 | 1 |
| N.Bosa #97 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| F.Warner #54 | 2 | 0.0 | 1 | 0 | 0 | 0 | 1 | 0 |
| A.Collins #95 | 2 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| B.Huff #47 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| N.Martin #45 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| D.Lenoir #2 | 1 | 0.0 | 0 | 1 | 10 | 0 | 0 | 0 |
| J.Graham #41 | 2 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| J.Brown #27 | 7 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| J.Peppers #34 | 5 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 |
| TEAM | 25 | 0.0 | 3 | 1 | 10 | 0 | 1 | 1 |
Kicking
San Francisco 49ers
Player |
fg |
fg pct |
lng |
xp |
xp pct |
50+ |
50+ pct |
|---|---|---|---|---|---|---|---|
| T.Morstead #7 | 0 / 0 | 0.0 | 0 | 0 / 0 | 0.0 | 0 / 0 | 0.0 |
| J.Moody #4 | 0 / 0 | 0.0 | 0 | 2 / 2 | 100.0 | 0 / 0 | 0.0 |
| TEAM | 0 / 0 | 0.0 | 0 | 2 / 2 | 100.0 | 0 / 0 | 0.0 |
Punting
San Francisco 49ers
Player |
punts |
yds |
avg |
tb |
in20 |
lng |
blk |
|---|---|---|---|---|---|---|---|
| T.Morstead #7 | 1 | 43 | 35.0 | 0 | 0 | 43 | 0 |
| TEAM | 1 | 43 | 43.0 | 0 | 0 | 43 | 0 |



