SANTA CLARA – Hey, at least the 49ers didn’t lose to both Cardinals’ backup quarterbacks this season.
KAEPERNICK: B+. Played his best when it really mattered. Threw two touchdown passes and zero picks for the first time since Week 6. Also threw zero fourth-quarter touchdown passes for the 18th game in a row. Would have committed a Delay of Game penalty with 2:11 left in the fourth quarter if Marcus Martin hadn’t been flagged for a false start as the play clock expired. Even at his best, Kaepernick makes the same mistakes every game. The Niners need to take a quarterback in the first few rounds of the upcoming draft.
RUNNING BACKS: A. God love Frank Gore. He came into the game averaging just 2.7 yards per carry against the NFC West this season. But today he averaged 5.8 yards per carry and gained a whopping 144 rushing yards. Way to go out on top, Frank. The Niners need to replace him in the upcoming draft.
WIDE RECEIVERS: C. My stat sheet says Anquan Boldin was targeted nine times and caught just two passes. Am I reading that correctly? Is that a typo? I’m also seeing that Michael Crabtree averaged 10.2 yards per catch this season. Just five wide receivers averaged fewer yards per catch than Crabtree this season. Now that Crabtree is a free agent, why would any team want him? The Niners don’t need him. They need to draft a wide receiver in the first round. Google DeVante Parker.
TIGHT ENDS: F. Again, the Niners threw Vernon Davis just one pass. Again, it wasn’t deep or in the red zone. If the coaches had a grudge against Davis, they got even. Davis had by far the worst season of his career.
OFFENSIVE LINE: A. Dominated everywhere. Gore averaged 5.28 yards per carry running left, 5.71 yards per carry running right and 5.75 yards per carry up the middle. Anthony Davis makes such a big difference in the running game.
DEFENSIVE LINE: D. Gave up 98 rushing yards to bad running backs. Even though Tank Carradine sacked Ryan Lindley once, Lindley had more than enough time to scan the field and throw the ball most of the game.
LINEBACKERS: D. Michael Wilhoite intercepted a pass. Aaron Lynch sacked Lindley on the second-to-last play of the game. Aldon Smith didn’t sack or hit Lindley once. His play drastically deteriorated during his 9-week suspension this season. Lynch, not Smith, currently is the Niners’ best pass rusher.
DEFENSIVE BACKS: C. Considering the Niners had no pass rush, these guys did OK. Even Craig Dahl wasn’t terrible – he made the game-ending interception. The defense had no answer for Michael Floyd (8 catches, 153 yards, 2 touchdowns) but they’ve never had an answer for him.
SPECIAL TEAMS: B. Phil Dawson can’t kick kickoffs into the end zone anymore, but he made a 53-yard field goal, so he isn’t washed up yet.
COACHES: C. I get why teams want Jim Harbaugh – his winning percentage is through the roof. But I don’t get why any team would want Greg Roman. The 49ers’ first-string offense scored just 75 points after halftime this season – 4.7 points per second half. Is that the worst second-half output in NFL history? Whatever it is, it will haunt Roman for the rest of his career.
Grant Cohn writes sports columns and the “Inside the 49ers” blog for The Press Democrat’s website. You can reach him at email@example.com.