SANTA CLARA – Here is how the 49ers (10-4) graded in Sunday’s 37-24 home win over the Tennessee Titans (2-11):

PASS OFFENSE: A

Brock Purdy commanded 70-yard touchdown drives on the first two possessions, threw three touchdowns overall and pumped out 295 yards, including a game-long 38-yard rocket to a crossing Ricky Pearsall to set up a third-quarter scoring drive. Amid ankle and knee injuries, Pearsall broke out with six catches for 96 yards, after just five catches for 20 yards over his previous three games combined. Jauan Jennings’ two touchdown catches came in contested fashion, giving him a career-high seven scores this season. George Kittle (eight catches, 88 yards) has scored in 5-of-9 games he’s played. Purdy’s scrambling limited the Titans to two sacks, one of which forced a fourth-quarter fumble.

RUN OFFENSE: B

A 38-carry barrage is always desired, but this one certainly wasn’t dominant (138 yards; 3.6 yards per carry). Christian McCaffrey overcame a midweek illness and Saturday morning’s tight back to score his ninth rushing touchdown in as many games, though he averaged just 3.3 yards per carry (22 attempts, 73 yards) with none reaching 10 yards. Purdy had the day’s (season’s?) best run with a career-long 26-yard scramble to ignite a 95-yard touchdown drive. Brian Robinson managed just 21 yards on nine carries.

PASS DEFENSE: D+

The 49ers are the first team that failed to sack rookie Cam Ward, who’s been sacked 49 times to tie for the league’s most through 13 games. Keion White had two hits on Ward and Cle Ferrell had the 49ers’ only other one. The 49ers failed to notch an interception for the second straight game; Malik Mustapha tried on a deep ball that Van Jefferson instead high-pointed at the 1-yard line.

RUN DEFENSE: C-

Dee Winters made the best tackle when he slammaed Chimere Dike for a 7-yard loss on first-and-goal in the first quarter. That was the defense’s only tackle for loss, though Ferrell had a third-and-goal stop for no gain.Not so great: Allowing Tony Pollard’s fourth-quarter touchdown run to cut the 49ers’ lead to 10 points with 5 minutes remaining.

SPECIAL TEAMS: A-

Eddy Piñeiro returned from a two-game absence and made all his kicks, improving to 25-for-25 on field-goal attempts this season. He was good from 33, 37 and 40 yards, and he’s so charmed that a 51-yard miss was wiped out by a Titans penalty. He did, however, boot one kickoff out of bounds. Thomas Morstead had no punts for the first game this season, though that also happened in the preseason at Las Vegas. Skyy Moore’s lone action was a nice, 18-yard punt return.

COACHING: A-

This was Kyle Shanahan’s first game on his birthday in nine years as the 49ers’ coach, and he celebrated his 46th by unwrapping a fourth straight win and securing his fifth 10-win season.