SANTA CLARA — Here is how the 49ers (4-10) graded in Sunday’s 25-23 win over the Tennessee Titans (8-5):

PASS OFFENSE: A

Jimmy Garoppolo, 3-0 as the 49ers’ starter with a third comeback win, brings an aura of calm and poise that especially shows up in clutch situations. His 381 passing yards came on completions to nine receivers, including himself, as he snared a batted ball for a 6-yard loss. Marquise Goodwin is on a tear (career-high 10 catches, second straight game over 100 yards). Kendrick Bourne broke out with 85 yards, including a 54-yard reception in the fourth quarter. Tight ends Garrett Celek and George Kittle are producing, and Trent Taylor didn’t let a third-down drop ruin his day as he started the winning drive with a catch. The pass protection fared fine in the face of relentless blitzes (three sacks).

RUN OFFENSE: F

The 49ers simply could not run against the Titans’ blitz-heavy fronts. Carlos Hyde lost yards on four carries, was held for no gain on three carries, gained 1 yard on two carries and finished with 25 total yards on 16 carries (1.6-yard average). Matt Breida had five carries for 16 yards, none longer than a 6-yard run.

PASS DEFENSE: C

These past two wins have exposed the 49ers’ glaring need for a top-flight cornerback, and that Dontae Johnson simply isn’t cutting it (or making positive plays) as a starter. DeForest Buckner shared a sack with Tank Carradine, and Buckner would have had another if not for a Johnson penalty. Elvis Dumervil had two hits on Marcus Mariota, who wasn’t sharp but did lead scoring drives near the end of each half.

RUN DEFENSE: A

For the first time since the end of the 2013 regular season, the 49ers have kept opponents under 100 rushing yards for four consecutive games. Leading that unit Sunday were Buckner (nine tackles), Reuben Foster (eight), Eric Reid (eight), Brock Coyle (five; forced fumble) and Adrian Colbert (five; fumble recovery).

SPECIAL TEAMS: A

Robbie Gould’s career-best sixth field goal won it for the 49ers as time expired, and he’s simply been “automatic,” as coach Kyle Shanahan said. Gould made it a point to share credit for his success with the special teams unit, so kudos to all those involved. Bradley Pinion only needed to punt once. Three of Breida’s kickoff returns failed to reach the 20-yard line.

COACHING: A

So much praise is worthy after the best win in Levi’s Stadium’s four-year history, and rather than add to how great a play caller Kyle Shanahan is, it’s worth noting that player after player credited the coaches for preparing them in practice, especially in terms of their daily two-minute drills.