| 1st | 2nd | 3rd | 4th | Tot | |
| SF | 14 | 10 | 10 | 14 | 48 |
| IND | 7 | 10 | 3 | 7 | 27 |
The San Francisco 49ers may not be playing defense at the level they've played in the past as they approach the postseason, but their offense certainly appears to be peaking at the right time.
The Indianapolis Colts had no answers for the 49ers' offense on Monday night, as the 49ers rolled up 440 total yards in a 48-27 road win at Lucas Oil Stadium. Quarterback Brock Purdy was in a zone most of the night, as he passed for a career-high five touchdowns on 25-of-34 passing with 295 yards and one interception. Running back Christian McCaffrey chipped in 117 yards on 21 carries for the 49ers with two receiving touchdowns.
Meanwhile, the 49ers defense had some problems at times keeping 44-year-old recently unretired quarterback Philip Rivers in check, as Rivers finished the evening with 277 yards, two touchdowns, and one interception on 23-of-35 passing. But the defense held the Colts' ground game in check and made some plays when it mattered, including a late-game pick-six by linebacker Dee Winters that sealed the victory.
Purdy, Rivers dominate first half with strong quarterback play
The opening possession of the game wasn't a good one for the 49ers' defense, which gave up a nine-play, 72-yard drive that gave the Colts an early 7-0 lead. The Colts dug themselves in deep holes twice on the drive due to penalties, but both times they dug out on completions from Rivers on 3rd-and-long. Rivers accounted for all 72 yards on the drive, which came to a conclusion when he found wide receiver Alec Pierce in the end zone for a 20-yard touchdown.
Philip Rivers hits Alec Pierce on the free play for a 20-yard touchdown!
SFvsIND on ESPN
— NFL (@NFL) December 23, 2025
Stream on @NFLPlus and ESPN App pic.twitter.com/LkZfbV3umf
The 49ers answered decisively, on both offense and special teams. They tied the game on a six-play, 69-yard drive that ended in a 22-yard touchdown pass from Purdy to wide receiver Demarcus Robinson. A 26-yard completion to tight end George Kittle moved the 49ers into Colts territory early in the drive, then after three shorter gains by McCaffrey, Purdy delivered Robinson his first touchdown catch of the year to tie the game.
Brock Purdy and the 49ers answer with a 22-yard touchdown pass to Demarcus Robinson 🎯
SFvsIND on ESPN
— NFL (@NFL) December 23, 2025
Stream on @NFLPlus and ESPN App pic.twitter.com/jhABiTOQM5
On the ensuing kickoff, the 49ers got the ball right back when safety Ji'Ayir Brown knocked the ball out of the hands of return man Ameer Abdullah, causing a fumble that was recovered by tight end Jake Tonges at the Colts' 26-yard line. Five plays later, Purdy found McCaffrey in the end zone for a 2-yard touchdown pass and a 14-7 lead.
CMC has his 15th touchdown of the season!
SFvsIND on ESPN
— NFL (@NFL) December 23, 2025
Stream on @NFLPlus and ESPN App pic.twitter.com/EJeF926T4T
Rivers cut through the 49ers' defense again on the next drive, leading the Colts downfield to a 1st-and-Goal at the 10. A holding penalty moved the Colts eight yards in the other direction, but the Colts overcame it with another touchdown pass to Pierce. An incomplete pass on first down followed by a two-yard run on second down put the Colts in a 3rd-and-Goal from the 16, then Rivers found Pierce to tie the game at 14 early in the second quarter.
Philip Rivers to Alec Pierce again!
SFvsIND on ESPN
— NFL (@NFL) December 23, 2025
Stream on @NFLPlus and ESPN App pic.twitter.com/nldjwzesvd
The 49ers answered yet again, this time with a 10-play, 69-yard drive that put them back in front with a touchdown pass to Kittle. The 49ers converted a key 4th-and-1 earlier in the drive on a Purdy tush push, then after an 18-yard run by McCaffrey and a 10-yard catch by McCaffrey, the 49ers found themselves in the red zone with a 1st-and-10 at the 17. After a six-yard run by Brian Robinson on first down, Purdy rolled right and found Kittle from 11 yards out to give the 49ers a 21-14 cushion.
Brock Purdy throws his 3rd touchdown of the half!
SFvsIND on ESPN
— NFL (@NFL) December 23, 2025
Stream on @NFLPlus and ESPN App pic.twitter.com/uoqT8Va214
The 49ers' defense forced the first punt of the game on the next possession after the first-career sack of defensive tackle C.J. West led to a three-and-out, then the offense took over at their own 18-yard line with just over seven minutes remaining in the half. Disaster was averted on the first play of the possession when tight end Luke Farrell, after giving up a strip sack of Purdy to defensive end Laiatu Latu, caught a loose ball in the air and advanced it for a three-yard gain. Purdy led the 49ers downfield from there, completing passes of 12 yards to Kittle and 23 yards to wide receiver Skyy Moore to move across midfield, followed by a 17-yard completion to Kittle and an 11-yard completion to wide receiver Kendrick Bourne to move the ball to the 11. But the drive fizzled inside the 10, forcing the 49ers to settle for a 25-yard field goal by Eddy Pineiro to take a 24-14 lead.
Luke Farrell right place right time
SFvsIND on ESPN
— NFL (@NFL) December 23, 2025
Stream on @NFLPlus and ESPN App pic.twitter.com/bm5blWcVzB
Rivers and the Colts took over at their own 35-yard line with 1:51 left in the half and moved across midfield when a third-down pass interference penalty on cornerback Darrell Luter put the ball at the 49ers' 41-yard line. The Colts moved inside the 30 but stalled and were forced to settle for a 39-yard field goal by Jake Grupe to cut the lead to 24-17. Moore returned the ball to the 40-yard line on the kickoff, giving the 49ers hope to put the ball in field goal range with 11 seconds remaining. A 14-yard catch by Bourne led the 49ers to bring on Pineiro to attempt a career-long 64-yard field goal, but the attempt fell no good after hitting the crossbar.
Purdy wound up outdueling Rivers in the first half, although both quarterbacks put up big numbers over the opening two quarters. Purdy finished with 165 yards and three touchdowns on 13-of-17 passing, while Rivers connected on 14-of-21 attempts for 175 yards and two touchdowns. The 49ers added 85 yards on the ground, leading to an edge of 250 to 165 in total yardage.
Big plays on offense and defense help 49ers pull away in the second half
Things picked up where they left off for the 49ers to start the third quarter, as Purdy remained sharp while leading the 49ers on an eight-play, 64-yard drive that ended in a touchdown pass to wide receiver Jauan Jennings to give the 49ers a 31-17 lead. Purdy hit Kittle for a 15-yard gain to start the drive, then he found Jennings for a 21-yard gain to give the 49ers a first down on 3rd-and-8. Purdy then connected with Kittle for a 22-yard gain down to the 4-yard line, then on another third-down play, Purdy hooked up with Jennings again for a touchdown from three yards out.
Purdy to Jennings for six to open the 2nd half
SFvsIND on ESPN
— NFL (@NFL) December 23, 2025
Stream on @NFLPlus and ESPN App pic.twitter.com/RA0hBq9bmv
The Colts took over at their own 35 to start the next drive, then moved to midfield when an unnecessary roughness penalty was called on cornerback Deommodore Lenoir. A 14-yard completion to wide receiver Michael Pittman moved the ball to the 49ers' 35-yard line, but the 49ers stepped up on defense from there, forcing the Colts to settle for a 51-yard field goal from Grupe to cut the lead to 31-20. The 49ers responded with a field goal drive of their own -- an eight-play, 49-yard drive that led to a 38-yard kick from Pineiro to open up a 34-20 lead with 4:02 left in the third quarter.
The next possession for the Colts moved the clock into the fourth quarter and cut the deficit in half after a 12-play, 65-yard drive that ended in a one-yard touchdown run from Jonathan Taylor. The drive consisted mainly of short gains outside of a 19-yard pass to tight end Tyler Warren, then Taylor, who had been held largely in check by the 49ers throughout the game, plowed into the end zone to bring the Colts to within seven points with just under 13 minutes left to play.
Jonathan Taylor and the Colts are within one score in the 4th quarter
SFvsIND on ESPN
— NFL (@NFL) December 23, 2025
Stream on @NFLPlus and ESPN App pic.twitter.com/Wro12tS8jn
The offense kept coming for the 49ers on the following drive, which saw them go back up by 14 points after Purdy connected on his fifth touchdown pass of the evening. The drive spanned 70 yards on 10 plays and included a 24-yard run by McCaffrey and an 11-yard completion to Jennings on a 3rd-and-9 to put the 49ers inside the 10. Purdy found McCaffrey wide open from nine yards out to finish the drive and give the 49ers a 41-27 lead.
Career high five touchdowns for Brock Purdy 🔥
SFvsIND on ESPN
— NFL (@NFL) December 23, 2025
Stream on @NFLPlus and ESPN App pic.twitter.com/xhMae1Jawk
The Colts had a 58-yard return on the following kickoff wiped out due to a holding penalty, then had to punt out of their own end zone after being buried deep due to a strip sack by defensive tackle Alfred Collins. The Colts then forced their first turnover of the night when they picked off Purdy to give them the ball at their own 29, and it looked like they were on the verge of getting back in the game after a 33-yard completion to Pierce put them deep in 49ers territory. But Winters closed the door on the next play when he stepped in front of a short pass from Rivers and returned it 74 yards for a touchdown and a 48-27 lead.
PICKED BY DEE WINTERS AND GOING 75 YARDS TO THE HOUSE
SFvsIND on ESPN
— NFL (@NFL) December 23, 2025
Stream on @NFLPlus and ESPN App pic.twitter.com/PChK24B767
The Colts pulled Rivers on the next drive in favor of rookie quarterback Riley Leonard, but turned the ball over on downs, allowing the 49ers to run out the clock. The 49ers moved to 11-4 on the season with the win, while the Colts fell to 8-7 with the loss.
Game Notes
Monday's game was the first in the Colts-49ers series since October 24, 2021, and the 47th overall. The win was the first over the Colts since 2001 for the 49ers, snapping a five-game losing streak. The Colts now have a 27-20 overall record in the series... Purdy's three first-half touchdowns marked the first time in his career he reached that number in the first half. He also became the first 49ers quarterback to throw five touchdowns on a Monday night... Pineiro's miss from 64 yards was his first miss in 27 attempts this season... The game was the first Monday night game since 2018 to have five first-half passing touchdowns... McCaffrey's 100-yard game came against a unit that came into the night as one of the league's best rushing defenses. McCaffrey's 24-yard run in the fourth quarter, which sent him over 100 yards on the game, was a season-long... Next up for the 49ers is another primetime game, this one coming at home against the NFC North-leading Chicago Bears (11-4) on Sunday. Kickoff time for that game will be at 8:20 p.m. ET/5:20 p.m. PT (NBC).
Scoring Summary
- Q1 10:36 — SF 0, IND 7
A. Pierce 20 yd. pass from P. Rivers (B. Grupe kick) (9 plays, 72 yds, 4:29) - Q1 07:19 — SF 7, IND 7
D. Robinson 22 yd. pass from B. Purdy (E. Pineiro kick) (6 plays, 69 yds, 3:17) - Q1 04:37 — SF 14, IND 7
C. McCaffrey 2 yd. pass from B. Purdy (E. Pineiro kick) (5 plays, 26 yds, 2:35) - Q2 14:19 — SF 14, IND 14
A. Pierce 16 yd. pass from P. Rivers (B. Grupe kick) (12 plays, 66 yds, 5:18) - Q2 09:42 — SF 21, IND 14
G. Kittle 11 yd. pass from B. Purdy (E. Pineiro kick) (10 plays, 69 yds, 4:39) - Q2 01:55 — SF 24, IND 14
E. Pineiro 25 yd. Field Goal (12 plays, 75 yds, 5:18) - Q2 00:21 — SF 24, IND 17
B. Grupe 39 yd. Field Goal (7 plays, 44 yds, 1:34) - Q3 11:02 — SF 31, IND 17
J. Jennings 3 yd. pass from B. Purdy (E. Pineiro kick) (8 plays, 64 yds, 4:02) - Q3 08:21 — SF 31, IND 20
B. Grupe 51 yd. Field Goal (7 plays, 32 yds, 2:42) - Q3 04:07 — SF 34, IND 20
E. Pineiro 38 yd. Field Goal (8 plays, 49 yds, 4:14) - Q4 12:45 — SF 34, IND 27
J. Taylor 1 yd. run (B. Grupe kick) (12 plays, 65 yds, 6:21) - Q4 07:42 — SF 41, IND 27
C. McCaffrey 9 yd. pass from B. Purdy (E. Pineiro kick) (10 plays, 70 yds, 5:04) - Q4 03:38 — SF 48, IND 27
D. Winters 74 yd. interception return (E. Pineiro kick)
Game and Player Stats
| SF | Team Stats | IND |
| 295 | Passing Yards | 254 |
| 145 | Rushing Yards | 58 |
| 440 | Total Yards | 312 |
| 8.68 | Avg Yards per Pass | 7.69 |
| 4.68 | Avg Yards per Run | 2.9 |
| 0 | Fumbles Lost | 1 |
| 1 | Int Thrown | 1 |
| 1 | Sacks Allowed | 2 |
| 00:33:05 | Time of Pos | 00:26:55 |
| 2 | Penalties | 6 |
| 49ers Player Stats | ||||
| Passing | Cmp/Att | Yds | TDs | INTs |
| Brock Purdy | 25/34 | 295 | 5 | 1 |
| Rushing | Att | Yds | Avg | TDs |
| Christian McCaffrey | 21 | 117 | 5.6 | 0 |
| Brian Robinson | 5 | 20 | 4 | 0 |
| Brock Purdy | 2 | 11 | 5.5 | 0 |
| Mac Jones | 3 | -3 | -1 | 0 |
| Receiving | Rec | Tgt | Yds | TDs |
| George Kittle | 7 | 8 | 115 | 1 |
| Jauan Jennings | 5 | 6 | 71 | 1 |
| Christian McCaffrey | 6 | 8 | 29 | 2 |
| Kendrick Bourne | 3 | 5 | 27 | 0 |
| Skyy Moore | 1 | 1 | 23 | 0 |
| Demarcus Robinson | 2 | 2 | 23 | 1 |
| Jake Tonges | 1 | 2 | 7 | 0 |
| Brian Robinson | 0 | 1 | 0 | 0 |
| Fumbles | Fum | Lost | ||
| Brock Purdy | 1 | 0 | 0 | 0 |
| Kicking | FG | Att | Lg | XP |
| Eddy Pineiro | 2 | 3 | 38 | 6 |
| Punt Returns | Att | Avg | TDs | Lg |
| Skyy Moore | 1 | 8 | 0 | 8 |
| Defense | T-A | Sck | INTs | FF |
| Tatum Bethune | 9-5 | 0 | 0 | 0 |
| Malik Mustapha | 8-5 | 0 | 0 | 0 |
| Ji'Ayir Brown | 6-4 | 0 | 0 | 0 |
| Upton Stout | 6-3 | 0 | 0 | 0 |
| Darrell Luter | 6-1 | 0 | 0 | 0 |
| Kalia Davis | 3-3 | 0 | 0 | 0 |
| Sam Okuayinonu | 3-2 | 0 | 0 | 0 |
| Keion White | 3-2 | 0 | 0 | 0 |
| Dee Winters | 3-2 | 0 | 1 | 0 |
| Deommodore Lenoir | 3-1 | 0 | 0 | 0 |
| Eric Kendricks | 2-2 | 0 | 0 | 0 |
| Bryce Huff | 2-1 | 0 | 0 | 0 |
| Alfred Collins | 2-1 | 1 | 0 | 1 |
| Luke Gifford | 1-1 | 0 | 0 | 0 |
| Clelin Ferrell | 1-1 | 0 | 0 | 0 |
| CJ West | 1-0 | 1 | 0 | 0 |
| Colts Player Stats | ||||
| Passing | Cmp/Att | Yds | TDs | INTs |
| Philip Rivers | 23/35 | 277 | 2 | 1 |
| Riley Leonard | 0/1 | 0 | 0 | 0 |
| Rushing | Att | Yds | Avg | TDs |
| Jonathan Taylor | 16 | 46 | 2.9 | 1 |
| Tyler Goodson | 3 | 9 | 3 | 0 |
| Josh Downs | 1 | 3 | 3 | 0 |
| Receiving | Rec | Tgt | Yds | TDs |
| Alec Pierce | 4 | 4 | 86 | 2 |
| Josh Downs | 5 | 9 | 65 | 0 |
| Jonathan Taylor | 3 | 3 | 33 | 0 |
| Michael Pittman | 4 | 5 | 32 | 0 |
| Tyler Warren | 3 | 9 | 30 | 0 |
| Mo Alie-Cox | 2 | 2 | 16 | 0 |
| Andrew Ogletree | 1 | 2 | 11 | 0 |
| Ameer Abdullah | 1 | 1 | 4 | 0 |
| Coleman Owen | 0 | 1 | 0 | 0 |
| Fumbles | Fum | Lost | ||
| Philip Rivers | 1 | 0 | 0 | 0 |
| Ameer Abdullah | 1 | 1 | 0 | 0 |
| Kicking | FG | Att | Lg | XP |
| Blake Grupe | 2 | 2 | 51 | 3 |
| Punting | No | Avg | I20 | Lg |
| Rigoberto Sanchez | 2 | 46.5 | 1 | 54 |
| Defense | T-A | Sck | INTs | FF |
| Camryn Bynum | 7-2 | 0 | 1 | 0 |
| Nick Cross | 6-3 | 0 | 0 | 0 |
| Germaine Pratt | 6-2 | 0 | 0 | 0 |
| DeForest Buckner | 5-1 | 0 | 0 | 0 |
| Zaire Franklin | 4-2 | 0 | 0 | 0 |
| Samson Ebukam | 4-1 | 0 | 0 | 0 |
| Cameron Mitchell | 4-0 | 0 | 0 | 0 |
| Kenny Moore | 3-1 | 0 | 0 | 0 |
| Johnathan Edwards | 3-1 | 0 | 0 | 0 |
| Neville Gallimore | 3-0 | 0 | 0 | 0 |
| Mekhi Blackmon | 3-0 | 0 | 0 | 0 |
| Laiatu Latu | 3-0 | 1 | 0 | 1 |
| Grover Stewart | 2-1 | 0 | 0 | 0 |
| Kwity Paye | 2-1 | 0 | 0 | 0 |
| Tyquan Lewis | 1-1 | 0 | 0 | 0 |
| Eric Johnson | 1-0 | 0 | 0 | 0 |