There isn’t an opponent to preview this weekend for the San Francisco 49ers, so we’ll look back at the previous 13 games played and award an MVP, a player not getting enough love for their performance, the most improved player, and much more.
Managing nine wins against a schedule that has seen seven teams fighting for playoff spots without your very best players is nothing to sneeze at. The only thing predictable about this year is that it’s been a rollercoaster of a season. You knew there would be injuries, just not to whom. You knew there would be head-scratching losses and triumphant wins; it was just a matter of when.
Let’s get into the award ceremony and start with the obvious.
Offensive MVP: Christian McCaffrey
Christian McCaffrey is fourth in the NFL…in receptions. He’s 11th in receiving yards and has five receiving touchdowns. All of this comes with an average depth of target of 2.4 yards beyond the line of scrimmage. He’s ninth in the NFL in first downs and has forced more missed tackles as a receiver than any other player in the league.
McCaffrey does not play wide receiver. Full-time, anyway. McCaffrey has rushed for 849 yards. Of those, 69 percent have come after contact. If there is a hole, he will maximize every yardage from that. If there isn’t, McCaffrey will find a way to get three or four yards. He’s seventh among running backs with 38 forced missed tackles, and third in the NFL with three first downs.
The 49ers have asked McCaffrey to do everything. He hasn’t just held up, but he’s excelled and made up for not having Brock Purdy and George Kittle for multiple games.
This is the resume of an Offensive Player of the Year candidate.
Defensive MVP: Robert Saleh
It’s one thing to lose Nick Bosa. It’s another to lose Fred Warner. Arguably the two best players at their position in the NFL have been out for nearly two months now — Bosa, obviously, has been out longer. Oh, and aside from that, the 49ers’ defensive coordinator has been tasked with getting a group of rookies up to speed and ready to play on the fly.
It’s been a season of adjustments for Robert Saleh. In Week 13, the player who played the second-most snaps on the defensive line wasn’t on the roster in October. The linebacker who played every snap but two totaled four snaps in 2023 and 2024.
Saleh has a roster without an identity, but is making chicken salad out of chicken you know what. With all of the moving parts, weekly injuries, and limitations in the secondary, the 49ers have seen their points per drive drop from 2.51 (31st) to 2.06 (13th) and, more importantly, the red zone scoring had dipped from 5.54 points per red zone trip in 2024 (31st) to 4.73 (10th) this season.
The goal is to limit points, and Saleh has worked his magic without a pass rush or a lockdown member in the secondary, and produced a serviceable defense.
Most improved player: Colton McKivitz
The 49ers’ offense has gone from winning despite their right tackle to winning because of their right tackle. PFF has both of the 49ers’ offensive tackles with elite run blocking grades. McKivitz ranks fifth among all linemen, one spot ahead of Trent Williams. Sports Info Solutions charts blown blocks against the run. McKvitz is third in the NFL with only two blown blocks on the season. That’s right, two. Only six players have earned more run blocking points than McKivitz this season, with one of them being teammate Dominick Puni.
McKivitz is having the best season of his life, and he is rewarding the Niners for giving him an extension. He’s earned more pass blocking points this season already than any of the other two full seasons as a starter. McKivitz’s blown-block rate has decreased every season in pass pro. In 2023, it was 6.3. Last year it was 5.9. This season, he’s at 4.3 percent.
In 2023, McKivitz gave up 13 sacks, which seems impossible in hindsight. Last year, that number went down to eight. This season, McKivitz has surrendered only four sacks. From a percentage standpoint, the sack percentage has gone from 2.4 to 1.3 to 0.8 this season.
McKivitz went from “How is he starting?” to “Are they really doing this again?” to “Oh, he’s kinda good.”
Most underappreciated: Dee Winters
In his first full season as a starter, Winters has more on his plate without Fred Warner next to him. Saleh asks Winters to be the Kyle Juszczyk of the defense. Basically, you’re going to do all of the dirty work, you’re probably not going to get any of the credit, but we need you to do it so everybody else can fall into their roles.
Winters is ninth in the league in stops, a tackle that constitutes a loss for the offense. Since Warner’s injury, Winters has the sixth-most pressures as a pass rusher among all linebackers. He’s also lined up on the defensive line 33 times to give Saleh a fifth defensive lineman, but also lined up 30 times in the slot, because somebody has to guard the tight end.
We can’t forget playing next to a second-year seventh-rounder. Tatum Bethune credited Winters for helping him get up to speed. Warner loves Winters. Earlier in the season, Warner said, “He’s got something in his body that few guys have. I don’t even have it in my body, the type of hits he makes.”
Next Gen Stats tracks “hustle stops,” where you travel at least 20 yards during the play to make a tackle. Winters leads the league with 19. The next linebacker has 15. He is the embodiment of what you need in a linebacker and the glue guy for Saleh’s defense.
The 49ers lost Dre Greenlaw and appear to have upgraded at the position.
Biggest disappointment: The wide receiver room
Blaming Brandon Aiyuk for everything makes you seem like you have it out for him. I do not. It’s evident that something is going on between both sides, and even the players are in the dark about that situation.
When you watch the 49ers offense, they lack that threat. That threat was Aiyuk. And the passing game hasn’t been able to make up for the lack of its $120 million receiver.
Before injury, Ricky Pearsall looked like he could make Aiyuk an afterthought. But since he returned from a PCL injury, Pearsall has been targeted nine times and has one more yard than Jordan Watkins. In Week 11, the eye in the sky said Pearsall was getting open. That was not the case last week.
To me, it’s troubling that you cannot use your first-round wide receiver as an “X” or in isolated situations. Instead, you’re reliant on Jauan Jennings on those plays. Jennings has a role where he can make an impact in this offense. Jennings cannot be your go-to wide receiver. Both of those things are true when I watch this team. There’s a ceiling on your offense when your biggest threat cannot stretch the field and win vertically.
With Pearsall, he’s been taking “the easy way out” on routes. Meaning, it’s almost as if he’s avoiding contact and the physicality that made Aiyuk a WR1. It’s forced him to stay at Z, and now Jennings goes from F to X. Demarcus Robinson is playing F now, and he looks lost and uncertain — far from the player in the preseason.
Wide receivers with at least 40 targets this season and the lowest EPA when targeted:
Jerry Jeudy -40.9
Justin Jefferson -26.7
Jauan Jennings -11.9.
They need more out of Pearsall, which would mean less from Jennings. It’s not as if the team is playing exclusively through George Kittle. He has only had two more targets than Jennings since Week 10.
The Niners need one of their wide receivers to step up in the final month. It’s odd to say, but the 49ers’ wide receiver group could be the reason this team does not make it far in the postseason.
Biggest surprise: The offensive line
As you saw above, McKivitz, Puni, and Williams are all dominant run blockers. The player with the lowest blown block rate on the team plays center. That’s right, Jake Brendel and his 2.0 blown block rate tops Colton McKivitz (2.8), Trent Williams (3.1), and Dominick Puni (3.2).
The 49ers’ offensive line is 14th in adjusted line yards, but seventh in “power success,” which tracks how well you block in short-yardage situations on third and fourth down. The offense is league-average in rushing success rate and time-to-pressure rate, but they’ve had a revolving door at left guard.
Spencer Burford is coming into his own. His blown-block rate of 5.0 is exacerbated by inexperience. For example, last week, you could see Burford thinking in real time, “Should I help this person or should I go help the player blocking Myles Garrett?” Burford is still a tick slow when it comes to processing, which is why some of his pressure numbers look the way they do.
As a run blocker, Burford is plenty good (2.4 blown block rate). The two longest runs in Week 13 were a direct result of Burford:
The 49ers’ offensive line is the biggest surprise this year, because it was supposed to be the unit holding the offense back. I’d argue this unit is the reason the 49ers will thrive offensively moving forward. You haven’t been able to say that about a Kyle Shanahan offense since…ever?