Offense: The second-best sign for the 49ers: Colin Kaepernick was decidedly better than he was in his first start this season four contests ago and infinitely better than he was last year in Arizona. Carlos Hyde, however, rushes for only 14 yards on 13 carries in his first game back from a shoulder injury. Grade: B+
Defense: The best sign for San Francisco? The defense allowed only 55 rushing yards by David Johnson, who entered the game as the NFL’s fourth-leading rusher. Of course, Arizona mostly attacked through the air. Carson Palmer threw for 376 yards, and the Cardinals had two receivers surpass 100 yards. Grade: C-
Special teams: Phil Dawson knocked in field goals from 49 and 53 yards and is one field goal shy of 400 for his career. The Cardinals didn’t give JaCorey Shepherd many chances on kick returns, and Jeremy Kerley fumbled a punt return. Grade: C
Never miss a local story.
Overall: The 49ers were competitive until late in the game, something that hasn’t been the case since a Week 4 loss to Dallas and something that hasn’t happened on the road since last year’s overtime win in Chicago on Dec. 6. Still, it’s their eighth straight loss, their worst streak since 2007. Grade: C+