SAN FRANCISCO -- As the 49ers made their stretch-run push to the Super Bowl last year with quarterback Colin Kaepernick, tight end Vernon Davis was seldom a big part of the offense.
Davis caught a combined six passes in the 49ers' final regular-season games, and there were concerns about a lack of chemistry with Kaepernick.
Those concerns vanished Sunday during the 49ers' 32-20 victory over the Arizona Cardinals at Candlestick Park.
Davis caught eight passes for a career-high-tying 180 yards and two touchdowns, and he did almost all of his damage in the first half when he had seven catches for 171 yards and both scores.
"It's just one of those days," Davis said. "When you're in the zone, it's like you're high. You can't come down, can't come down. He was able to find me several times. We started to click. We were on the same page. Because that's what it's about, it's about being on the same page, just having that chemistry with the quarterback."
Davis had 180 receiving yards on seven catches against New Orleans on Jan. 14, 2012, in a 36-32 playoff victory at Candlestick Park when Alex Smith was his quarterback.
Kaepernick completed 16 of 29 passes for 252 yards, two touchdowns and one interception with a passer rating of 92.9. He targeted Davis 11 times.
"We knew he'd be a mismatch," Kaepernick said. "He always is. He came to play today. He did a great job.
"Vernon's open most of the time. The more we get the ball in his hands and let him use his speed, the better."
The 49ers had a balanced attack, as Frank Gore rushed for 101 yards on 25 carries.
Cardinals quarterback Carson Palmer went 25-for-41 for 298 yards with two interceptions, two touchdowns and a 79.1 rating. Cardinals wide receiver Larry Fitzgerald caught six passes for 117 yards and a touchdown.
The 49ers improved to 4-2 and remained one game behind 5-1 Seattle in the NFC West. The Cardinals fell to 3-3 and dropped into a tie for third place with St. Louis, paying the price for four costly turnovers.
"We have to find ways to win these games," Cardinals offensive tackle Eric Winston said. "Until we do, we're just going to be a team that's close."
Cardinals defensive end Calais Campbell was carted off the field on a stretcher with just under five minutes left in the game after suffering an injury.
"He left the field with movement and the feeling was coming back," Cardinals coach Bruce Arians said. "He had extreme numbness."
The 49ers built a 22-14 halftime lead on the strength of two Phil Dawson field goals, a safety and two Kaepernick touchdown passes to Davis, the first for 61 yards and the second for 35. Arizona countered with Palmer's 75-yard touchdown pass to Fitzgerald and Andre Ellington's 15-yard scoring run.
Arizona marched 61 yards in nine plays for a touchdown on its opening drive of the second half, cutting San Francisco's lead to 22-20 on Palmer's 15-yard scoring pass to Michael Floyd. The Cardinals went for two but came up empty after Palmer tossed the ball backward to cornerback/wide receiver Patrick Peterson, and Peterson's desperation pass to Fitzgerald was picked off by Carlos Rogers.
The Cardinals drove deep in 49ers territory late in the third quarter, but 49ers linebacker Patrick Willis forced a Fitzgerald fumble, and rookie safety Eric Reid recovered at the 11.
The 49ers then went on a punishing, 18-play, 89-yard scoring drive that used 9:32 as they took a 29-20 lead on Kendall Hunter's 6-yard touchdown run with 6:35 left to play.
Facing third-and-10 from the Arizona 34, Kaepernick hit Davis with a 9-yard pass to the 34. Fullback Bruce Miller bulled for 3 yards on fourth-and-1. That was the first of eight straight runs by the 49ers to cap the drive. Gore carried five straight times for a combined 22 yards, Miller gained 3, and Hunter bolted up the middle through a huge hole for a touchdown.
"For them to do that in the fourth quarter and to let them off the hook, that hurts," Cardinals safety Yeremiah Bell said. "We played the game good for three quarters, and the last 15 we let up a little bit, and that's not us."
The 49ers sealed their win when Corey Lemonier forced an Alfonso Smith fumble, and NaVorro Bowman recovered on the Cardinals' 31 with 5:56 remaining. Dawson's 44-yard field goal put the 49ers ahead 32-20 with 4:14 left to play.
The 49ers had a chance to take command early in the game after Reid and Rogers picked off Palmer passes and returned deep into Arizona territory, but they settled for two field goals and a 6-0 lead.
Arizona answered quickly on Fitzgerald's 75-yard catch-and-run for a touchdown, giving the Cardinals a 7-6 lead with 3:06 left in the quarter. The 49ers moved back ahead 8-7 when Lemonier sacked Palmer in the end zone for a safety with 9:22 remaining in the half.
After Arizona's free punt, the 49ers quickly scored on Kaepernick's 61-yard strike to Davis.
"Vernon, when he plays like this, he doesn't have to say anything," Kaepernick said. "We want to get the ball in his hands."
After Ellington capped an 80-yard drive with his 15-yard TD run, Davis got a half-step behind Bell down the right sideline and caught Kaepernick's 35-yard touchdown pass late in the first half.
NOTES: After missing two games with a groin injury, Willis returned to action Sunday and started. ... Niners CB Nnamdi Asomugha, who has lost his job as the No. 3 cornerback to Tramaine Brock, was inactive again. ... LBs Kevin Minter (hamstring) and Kenny Demen, DE Ronald Talley, RB Ryan Williams and OT Bobby Massie were among the Cardinals inactives. ... Niners starting NT Glenn Dorsey suffered a right hamstring injury midway through the first quarter and was replaced by Tony Jerod-Eddie.