The 49ers didn't complete a pass to a wide receiver until 1:20 was left in the half. They didn't need to.
Vernon Davis has 171 receiving yards - a regular-season, career-high for the tight end - including two long touchdowns on pretty, touch passes from Colin Kaepernick, and the 49ers lead 22-14. The Cardinals, meanwhile, have exactly two big plays. But both of them led to touchdowns - a 75-yard catch-and-run by Larry Fitzgerald and a 53-yard reception from Brittan Golden. That set up a 15-yard touchdown run by Andre Ellington.
For most of the half, however, the 49ers' best scoring chances came when they were on defense. Arizona quarterback Carson Palmer, who entered the game tied with Houston's Matt Schaub for second-most interceptions (nine) in the NFL, threw one to rookie safety Eric Reid and another to Carlos Rogers. Both set the 49ers offense up in the Arizona red zone, but it only could come away with two Phil Dawson field goals.
Rookie linebacker Corey Lemonier, playing in place of Aldon Smith, also had a safety on a sack of Palmer. It was his first career sack.
Otherwise, the story of the game has been Davis, who hauled in the 49ers' longest reception last week against the Texans, a 63-yarder. Today, he has touchdown catches of 61 and 35 yards. The longer of the two came on a free play for the 49ers when the Cardinals jumped offsides.
Kaepernick took advantage by stepping up in the pocket and lofting a perfect pass that hit Davis in stride. Davis missed the team's Sept. 22 game against the Colts with a hamstring injury and he's said recently that he's still not 100 percent.
Kaepernick shook off a slow start in which the 49ers opened with four, three-and-out series. He's now 12-22 for 216 yards, two touchdowns and an interception on a tipped pass in the end zone. He also lost a fumble at the end of the half.
Both Anquan Boldin and Jon Baldwin caught short passes in the last two minutes of the half.
- Matt Barrows