SAN FRANCISCO -- Tight end Vernon Davis caught eight passes for a career-high-tying 180 yards and two touchdowns, and Frank Gore rushed for 101 yards on 25 carries, leading the San Francisco 49ers to a 32-20 victory over the Arizona Cardinals on Sunday at Candlestick Park.
Davis had seven catches for 171 yards and two touchdowns by halftime. He was shut out in the third quarter, but caught a key 9-yard pass on the 49ers' lone touchdown drive of the second half.
Davis had 180 receiving yards on seven catches against New Orleans on Jan. 14, 2012, in a 36-32 playoff victory at Candlestick Park.
Niners quarterback Colin Kaepernick completed 16 of 29 passes for 252 yards, two touchdowns and one interception with a passer rating of 92.9. 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, while the Cardinals fell to 3-3 and dropped into a tie for third place with St. Louis.
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. According to the team, he had numbness and tingling in his extremities but was able to move his limbs.
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 for San Francisco.
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.
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 picking off a pair of Palmer passes, but the settled for two field goals and a 6-0 lead.
Reid intercepted a Palmer pass over the middle and returned it 53 yards to the Arizona 7. But the 49ers backtracked, and Dawson hit from 35 yards with 9:37 left in the first quarter.
On Arizona's third possession, Palmer threw a third-and-9 pass into double coverage, and Rogers intercepted and returned it 11 yards to the Cardinals' 11. Once again, the 49ers went nowhere, and Dawson connected from 26 yards with 4:31 remaining in the first.
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. Palmer hit Fitzgerald on a quick curl, and he spun away from safety Donte Whitner and nickel corner Tramaine Brock as both 49ers appeared to go for either a big hit or an interception. Fitzgerald picked up a wall of blockers and raced into the end zone.
The 49ers moved back ahead 8-7 when Lemonier sacked Palmer in the end zone for a safety with 9:22remaining in the first half.
After Arizona's free punt, the 49ers took two plays and 51 seconds to travel 71 yards for a touchdown. Gore powered for 10 yards on first down, then Kaepernick hit Davis on a 61-yard touchdown strike.
Arizona answered again, needing just three plays to cover 80 yards for a touchdown. Palmer hit Rob Housler for 12 yards on first down then lofted a 53-yard strike down the right sideline to Brittan Golden, who beat Rogers' man coverage. Ellington scored on a 15-yard run around right end as the Cardinals cut San Francisco's lead to 15-14 with 7:03 on the clock.
Late in the half, Davis got a half-step behind safety Yeremiah Bell down the right sideline and caught Kaepernick's 35-yard touchdown pass.
NOTES: After missing two games with a groin injury, Willis returned to action Sunday and started against Arizona. ... Niners outside linebacker Aldon Smith missed his third straight game while undergoing treatment for substance abuse. ... Niners CB Nnamdi Asomugha, who has lost his job as the No. 3 cornerback to Brock, was inactive again. RB LaMichael James was also inactive, despite being healthy. ... 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. ... Niners linebacker Michael Wilhoite left the game in the third quarter with forearm and quadriceps injuries.