With Sunday’s 23-20 win over the Tampa Bay Buccaneers, the 49ers (5-4) have won consecutive games for the first time this season. They’re also favored by 6 1/2 points entering a Week 11 division showdown against the Seattle Seahawks, so it’s not hard to see the 49ers getting on a true November roll.
But the first order of business to begin the new week involved addressing a fourth-quarter sideline altercation in Tampa that saw receiver Deebo Samuel shove long snapper Taybor Pepper. Coach Kyle Shanahan said Monday that Pepper “overreacted a little bit” to Samuel challenging kicker Jake Moody to raise his level of play. This led to Samuel’s shove.
“We squashed it and we’re good,” Shanahan said.
It’s time to move on to Week 11, but first…
Here are full snap counts and grades from the 49ers’ win
Quarterback: Brock Purdy (64 snaps)
Game grade: A
Remember when Purdy and Shanahan seemed to be struggling at inopportune junctures against schemed defensive pressure? That appears to be in the rearview mirror. Purdy completed 12-of-14 passes for 200 yards against Tampa Bay’s blitz.
Purdy has come a long way since his first career start, which came against Todd Bowles’ Buccaneers in 2022. On his first snap, a blindside nickel blitz eviscerated Purdy in the pocket. He’s now shredding designed defensive pressure with both his arm and his legs.
The 49ers must still improve in the red zone — they finished 1-for-3 there Sunday — but Purdy doesn’t seem to be the root of that issue. In fact, the 49ers should probably consider throwing more on early downs when they’re close to scoring, because first-down runs in the red zone were again inefficient in Tampa. Failures there put Purdy into tough spots on subsequent downs.
Running back/fullback: Christian McCaffrey (56), Jordan Mason (3), Isaac Guerendo (3), Kyle Juszczyk (25)
Game grade: B+
McCaffrey took on a heavy workload, as the snap total suggests. But the 49ers did work Mason, Guerendo, and Deebo Samuel into the backfield much sooner than they had in past games with McCaffrey. It seemed that they were trying to keep McCaffrey at about 20 touches for the afternoon — he ran 13 times and was targeted seven times.
It wasn’t a particularly productive game on the ground for the 49ers, who rushed for 75 yards on 22 carries. But Tampa Bay was clearly intent on making Purdy throw to beat them, and McCaffrey was ready to do his part in the receiving game. He didn’t miss a beat with Purdy — and when the 49ers’ reserves make mistakes like this, it’s not hard to see why Shanahan is insistent on keeping McCaffrey on the field.
Wide receiver: Jauan Jennings (58), Samuel (50), Ricky Pearsall (41), Jacob Cowing (3), Ronnie Bell (10)
Game grade: A
Twice this season, Jennings — who previously played the 49ers “F” receiving position — has had to debut at a new spot with limited practice.
With Samuel out in Week 3 against the Rams, Jennings filled into the “Z” position and exploded for 11 catches, 175 yards, and three touchdowns.
Returning from a hip injury against the Bucs, Jennings slid into Brandon Aiyuk’s “X” receiving role and led the 49ers with seven catches for 93 yards, including the rumbling catch-and-run that set up the game-winning field goal.
Jennings will be at the X for the rest of the season. That makes him the 49ers’ No. 1 wide receiver, and he’s certainly performing like one — at the bargain rate of $7.7 million per season.
Tight end: George Kittle (57), Eric Saubert (12), Jake Tonges (2)
Game grade: A
Speaking of yards per route run, Kittle’s number — 2.4 — leads all tight ends by a wide margin and would nearly crack the top five of wide receivers above. We’re watching a future Hall of Famer at work.
Purdy was exceedingly efficient throwing to all five of his top eligibles Sunday, which is rare. But Kittle delivered at an entirely different level over his four targets.
The 49ers, who ranked last in yards after the catch to begin this season after ranking first in that category over the past several seasons, notched 179 yards after the catch against Tampa Bay.
Offensive line: Colton McKivitz (64), Dominick Puni (64), Jake Brendel (64), Aaron Banks (64), Trent Williams (64)
Game grade: B-
The 49ers haven’t been great in pass protection, but they’ve certainly made significant improvements over last season — and that should play a large role over the back half of this season.
Here are the pressures allowed against Tampa Bay:
- Williams: 3
- Brendel: 3
- McKivitz: 2
- Puni: 2
- Banks: 1
Puni is now Pro Football Focus’ No. 8-graded guard in run blocking. He also remains an above-average pass blocker. The rookie has been a grand-slam pick for the 49ers, whose 2024 draft class is making notable contributions.
Defensive line: Nick Bosa (52), Maliek Collins (43), Leonard Floyd (41), Sam Okuayinonu (36), Jordan Elliott (32), Evan Anderson (15), Kalia Davis (11), Robert Beal Jr. (5), Khalil Davis (5)
Game grade: B-
Bosa’s hip injury limited him over the week of practice and likely compromised his play against Tampa Bay, although he did fight to notch a massive fourth-quarter sack. Bosa worked against former 49ers tackle Justin Skule, who’d filled in for injured star Tristan Wirfs, on that play. But Bosa also missed a key tackle against Bucs running back Bucky Irving, and he couldn’t corral QB Baker Mayfield on a wild scramble later on (Bosa said he was trying to avoid a horse-collar penalty).
So this wasn’t a perfect performance, especially considering Tampa Bay’s second-half success on the ground. The Bucs finished with 110 rushing yards on 27 carries. But it should be noted that the 49ers defense held firm against the run before their special teams failed them on a hot day with a muffed punt in the third quarter. (Tampa Bay had only 37 rushing yards at that point.) The pass rush was also effective.
Defensive tackle Khalil Davis, acquired from the Houston Texans right before the trade deadline, played only five snaps. Expect his role to grow given more practice time with his new team.
Linebacker: Fred Warner (61), De’Vondre Campbell (61), Dee Winters (15)
Game grade: A-
The 49ers held Tampa Bay to 3.7 yards per play and Mayfield to just 4 yards per pass attempt. Those are measly numbers that would only be attainable with a good performance from the team’s linebackers.
Warner was his usual self, smothering running back Rachaad White with blanket coverage on a third-down throw. Campbell thumped his way to pair of loud stops and is finding his stride.
“I thought Dallas was his best game of the year,” Shanahan said. “And I thought this game was even better.”
Defensive back: Ji’Ayir Brown (61), Malik Mustapha (61), Deommodore Lenoir (61), Renardo Green (48), Isaac Yiadom (47), Rock Ya-Sin (12)
Game grade: A
The Bucs, missing their top three wide receivers, were at a huge disadvantage. But the 49ers, missing cornerback Charvarius Ward, weren’t at full strength either. And they held Tampa Bay’s wideouts to just four catches for 28 total yards, which is impressive under any circumstances. Brown also did a good job in coverage against tight end Cade Otton, who was the Bucs’ leading available receiver.
Green, who has now played 158 snaps, is PFF’s second-highest graded cornerback in the NFL. He was excellent in his first career start at outside corner with Ward out.
Ya-Sin played the final 12 snaps for Green, who suffered a toe injury, and notched good coverage on the late third-down play that forced Tampa to settle for a game-tying field goal. Green is listed as day-to-day with his injury.
Special teams
Game grade: F
The performance here was bad enough — 12.2 expected points lost — to drop the 49ers back into last place in special teams efficiency and stoke the aforementioned altercation on their sideline.
The bad news: the special teams ineptitude is clearly holding back a potentially great 49ers offense and a good defense. The good news: special teams is the easiest phase of the game to fix, as was evidenced by the fact that the 49ers actually outplayed the Dallas Cowboys’ top-ranked unit before the bye.
Consistency is key — even if it comes in the form of consistent mediocrity. The 49ers just can’t be abysmal on special teams. They’ll hope Moody’s game-winner will snap him out of that three-kick funk. And they’ll aim to avoid repeats of plays like Cowing’s muffed punt, sparked when Darrell Luter Jr. was legally pushed into the returner.
Combined with Moody’s three missed kicks, that ensured the 49ers’ special teams earned the worst grade possible — because this game was only close because of their failures.