San Francisco 49ers 23, Tampa Bay Buccaneers 20: Grades
TAMPA -- The San Francisco 49ers just beat the Tampa Bay Buccaneers 23-20. Here are the 49ers' grades for this performance.
QUARTERBACK: A-PLUS
Brock Purdy carried the 49ers to a victory and played exceptionally well in spite of Kyle Shanahan's preposterous game plan (more on him in a minute). He threw for 353 yards, 2 touchdowns and no interceptions despite not having a run game or an offensive system that can pick up a blitz. Purdy still found a way to make some of the best plays of his career and lead a game-winning drive with just 41 seconds left in regulation. He clearly was the MVP of this game. His touchdown pass to George Kittle was brilliant and his 30-yard blind throw to Christian McCaffrey while taking a hit might have been the best play of Purdy's career so far. He was clutch.
RUNNING BACKS: B-MINUS
Christian McCaffrey helped the 49ers passing game by making six catches for 68 yards and preventing the Buccaneers from double-covering anyone else, but he averaged just 3.0 yards per carry. After the game, he said he didn't quite feel like himself. Meanwhile, Jordan Mason, who's in midseason form and one of the leading rushers in the NFL, got just one carry and gained five yards. The 49ers did the Buccaneers a favor by not using Mason.
FULLBACK: F
Never touched the ball.
WIDE RECEIVERS: A
Jauan Jennings was the 49ers' best receiver. He doesn't stretch the field like Brandon Aiyuk used to, but Jennings still finds a way to produce. Today, he led all receivers with 93 receiving yards while playing split end for the first time. He deserves some Pro Bowl consideration. Ricky Pearsall was the 49ers' second-best receiver -- he had a 46-yard touchdown catch. And Deebo Samuel was the 49ers' third-best receiver -- he had a 32-yard catch. As a runner, he doesn't fool anyone anymore.
TIGHT ENDS: A
George Kittle had 3 catches for 57 yards and a touchdown, and for some reason, Shanahan didn't feed him the ball more often. Kittle is criminally underused.
OFFENSIVE LINEMEN: C
The running game didn't get any push and Brock Purdy got sacked three times by a defense that has a terrible pass rush.
DEFENSIVE LINEMEN: C
Nick Bosa recorded a sack but also missed a crucial tackle on 4th and 7 when he had Baker Mayfield in his grasp and still let him complete an 8-yard pass to extend the drive. In addition, the 49ers gave up 5.7 yards per carry and a touchdown to rookie running back Bucky Irving.
LINEBACKERS: C-PLUS
They struggled against the run but also limited the Buccaneers' no. 1 target, Cade Otten, to just 35 yards and no touchdowns.
DEFENSIVE BACKS: A
Charvarius Ward didn't play and the 49ers still gave up just 116 passing yards. Granted, the Buccaneers were missing both of their starting wideouts and had no one who could get open consistently.
SPECIAL TEAMS: F-MINUS
Jacob Cowing muffed a punt and Jake Moody missed three field goal attempts. After the third miss, Deebo Samuel said something to Moody, which prompted long snapper Taybor Pepper to say something to Samuel, which prompted Samuel to grab Pepper by his throat. Bad look all around. The 49ers melted down on the sideline during a victory. They're clearly not a tight-knit team yet.
COACHES: D
It's hard to overstate how bad Kyle Shanahan was despite winning. His game plan was to bury Jordan Mason, force-feed Christian McCaffrey in his first game back from bilateral Achilles' tendonitis, call red-zone passes that don't cross the goal line, forget about George Kittle for long stretches and play for field goals with a kicker who's three games removed from a high-ankle sprain. With a minute left in the first half, Purdy completed a 30-yard pass to Jennings and Shanahan didn't call a timeout even though he had three left. Instead, he let the clock run and eventually called for a field goal which Moody missed. Then in the red zone, he showed absolutely zero creativity. On first down, he typically called a run between the tackles that got stuffed. On second and long, he usually called for a low percentage pass to the back pylon. Then on third and long, he generally called passes that didn't even travel past the line of scrimmage. He coached like he was trying not to lose, plus he lost control of his team as two players nearly fought each other on the sideline during the fourth quarter. And his decision to waive Anders Carlsen and play Jake Moody nearly cost the 49ers the game. Shanahan is not having a good season. Fortunately for him, he has Purdy.