It's largely been a struggle this season for the San Francisco 49ers to get Christian McCaffrey going on the ground. The knee-jerk reaction is that he's lost a step.
But it's hard to believe that when he's dominating as a receiver. The blocking is the main contributor to McCaffrey's inefficiencies, especially on outside runs.
However, against the Arizona Cardinals in Week 10, the 49ers seem to have finally figured out how to unlock McCaffrey as a rusher in a couple of ways.
San Francisco 49ers running back Christian McCaffrey (23) runs with the ball
Nov 16, 2025; Glendale, Arizona, USA; San Francisco 49ers running back Christian McCaffrey (23) runs with the ball in the third quarter against the Arizona Cardinals at State Farm Stadium. Mandatory Credit: Matt Kartozian-Imagn Images / Matt Kartozian-Imagn Images
Entering Week 10, McCaffrey averaged 2.6 yards per carry on outside runs. When he rushes between the tackles, he averages 4.6 yards per carry. Kyle Shanahan seemingly recognized that versus Arizona.
About 62% of McCaffrey’s runs against the Cardinals were inside. He finished with a season-high 6.2 yards per carry overall and registered close to 70% rush success rate.
McCaffrey didn't eclipse 100 yards rushing. He only tallied 81 yards, so it's tempting to say he didn't have his best rushing performance. However, he arguably did have his best game on the ground.
Not only did he put up a season-high in yards per carry, but he also put up his best expected points added as a rusher (+5.4). This is the way for the 49ers to keep McCaffrey as an effective runner.
Before this season, their strength was rushing him on stretch/outside runs. But this year, whether it's simply the blocking or partly McCaffrey, it's not working. Inside runs need to be the skewed favorite from now on.
San Francisco 49ers running back Brian Robinson Jr. (3) runs with the ball
Nov 16, 2025; Glendale, Arizona, USA; San Francisco 49ers running back Brian Robinson Jr. (3) runs with the ball in the first half against the Arizona Cardinals at State Farm Stadium. Mandatory Credit: Joe Camporeale-Imagn Images / Joe Camporeale-Imagn Images
The 49ers in the last two games haven't been running McCaffrey into the ground as much. While his workload is still absurd, they aren't doing it too much as a rusher.
McCaffrey has carried the ball 25 times in the last two games. Brian Robinson Jr. has handled it 16 times. The 49ers are seemingly splitting carries at a 60-40 ratio between the two backs.
It's incredibly smart to do so. Robinson has earned more carries, which allows McCaffrey increased rest. That is probably why he looked a little more spry than usual against the Cardinals.
The 49ers need to continue this carry-split. It should only aid McCaffrey's efficiency both as a runner and as a receiver. Giving McCaffrey 20 or more carries will impact him negatively.
If Shanahan wants McCaffrey to perform optimally, he must maintain this workload. The 49ers traded for Robinson for a reason. He can't just be a filler player in the offense.
Follow Jose on X (Twitter)@JS3sanchez_to interact with him on the 49ers.