SANTA CLARA — The 49ers were not perfect on Sunday.
Well, they were not perfect other than quarterback Brock Purdy’s stat line, that is.
Purdy compiled the highest-attainable NFL passer rating of 158.3 in the 49ers’ 27-14 victory over the Tampa Bay Buccaneers at Levi’s Stadium.
Stay in the game with the latest updates on your beloved Bay Area and California sports teams! Sign up here for our All Access Daily newsletter.
But as the 49ers head into a key three-game stretch, they feel as if there are a lot of things for them to clean up, too.
“We’re taking steps in the right direction,” tight end George Kittle said. “But there are parts of our game we need to be executing better.”
The 49ers improved to 7-3 on the season and took a one-game lead in the NFC West. The Seattle Seahawks dropped a game in the standings with a 17-16 loss at the Los Angeles Rams.
The 49ers return to action on a short week with a Thursday night game in Seattle.
San Francisco 49ers
Find the latest San Francisco 49ers news, highlights, analysis and more with NBC Sports Bay Area and California.
Here are the grades from the 49ers’ win over Tampa Bay:
Rushing offense
The 49ers attempted 30 running plays, which always is a positive sign.
It mostly was a grind, though, as Christian McCaffrey averaged 3.7 yards (21 carries, 78 yards). The 49ers gained seven first downs on the ground.
Elijah Mitchell was mixed into the action in the second quarter and enabled McCaffrey to get an early rest. Mitchell carried four times for 24 yards.
The 49ers averaged just 3.8 yards per rushing attempt.
Grade: B-minus
Passing offense
Purdy completed 21 of 25 pass attempts for 333 yards with three touchdowns and no interceptions.
His passer rating in this game is the best in the history of the 49ers for any quarterback with 20 or more passing attempts.
The only blemish on the 49ers’ passing game were four sacks allowed — for a variety of reasons including failing to recognize an unblocked man, pass protection and sticky coverage.
Wide receiver Brandon Aiyuk had a big day with five catches for 156 yards, including a 76-yard touchdown early in the third quarter. George Kittle also had a big day with eight receptions for 89 yards and a touchdown.
Grade: A
Rushing defense
The 49ers made Tampa Bay one-dimensional, as they did a number with their run defense.
Running back Rachaad White found it particularly difficult to get anything going. He had just 30 yards rushing on nine carries.
Linebacker Fred Warner led the 49ers with 12 tackles, while Dre Greenlaw added eight stops.
The Bucs averaged 3.7 yards on the ground.
Grade: B-plus
Passing defense
Buccaneers quarterback Baker Mayfield threw for 246 yards and a touchdown, but the 49ers’ defense had the upper hand in this game.
The pass defense generated two takeaways, and Mayfield’s passer rating was just 76.7.
The 49ers got their hands on a handful of Mayfield passes, but they gathered in only one interception.
Rookie safety Ji’Ayir Brown entered the game in the second half in place of Talanoa Hufanga. He came up with a couple of huge plays in the closing minutes.
Brown broke up a fourth-down pass intended for Mike Evans in the end zone with 6:39 remaining. Then, he intercepted a pass in the end zone with 3:42 left to seal the victory.
The 49ers registered four sacks in the game. Arik Armstead, Nick Bosa and Chase Young had one apiece, while Warner and Greenlaw came up with a half-sack.
Warner and Bosa shared a forced fumble of Mayfield and Clelin Ferrell came up with the first-half recovery.
Grade: B-plus
Special teams
Special teams had a major letdown late in the game when they allowed Tampa Bay’s Deven Thompkins to break free on a 51-yard punt return.
Mitch Wishnowsky had a 51.0 yard average on three punts, but his low line-drive kick enabled Thompkins an opportunity for his long return. Wishnowsky’s net average was just 29.7 yards.
Kicker Jake Moody made field goal attempts of 37 and 28 yards and was perfect on his three extra points, too.
Grade: C
Coaching
Defensive coordinator Steve Wilks deployed a lot of different coverages, including dialing up some blitzes in key moments.
The moves worked out, including putting Brown in coverage against Evans in a key moment. The players made enough plays to finish the job.
The offensive plan was solid, playing to Purdy’s strengths, and the results were sparkling.
The 49ers did not handle the fourth quarter all that well when they were trying to protect the lead. They stopped the clock multiple times by running out of bounds when they could have been running out the clock.
Grade: B
Overall
There were times when each area of the 49ers played very well. And at other times, there was a lot to clean up.
The 49ers were penalized seven times for 66 yards.
Purdy had the best statistical game of his career. But, the 49ers’ offense could have been better at finishing the game. They had two three-and-outs to open the fourth quarter.
The 49ers came up with two takeaways and did not turn the ball over.
They did what they needed to do in order to get past the Buccaneers and enter this crucial three-game stretch against Seattle, Philadelphia and Seattle (again).
Grade: B