SAN FRANCISCO – Calais Campbell's teammates gathered around him near the 25-yard line as he lay injured late in the game, then he was carted off the field in a frightening scene.
After three quarters of sticking right with San Francisco, Arizona couldn't maintain its momentum over the final 15 minutes of a 32-20 loss to the 49ers on Sunday.
Losing Campbell, a key member on a much-improved defense, only made matters worse. The Cardinals (3-3) felt they were still right in the game and ready to win it.
"We didn't have that energy in that fourth quarter, enough to finish the game," said linebacker Daryl Washington, who played his second game back from a suspension for violation of the NFL's substance abuse policy.
"In this league, you have to keep playing cause you never know what will happen. In that fourth quarter we had to play like we did in the first three."
No matter the quarter, Arizona had no answer for Vernon Davis.
He caught touchdown passes of 61 and 35 yards and finished with a career-best 180 yards receiving in leading the 49ers to their third straight victory.
"It's just one of those days, when you're in the zone," Davis said. "It's a beautiful thing."
Colin Kaepernick threw for 252 yards and Frank Gore rushed for 101 yards on 25 carries for his second 100-yard game of the season. Kendall Hunter ran for a 6-yard touchdown that sealed it for the 49ers (4-2) with 6:35 remaining.
Rookie safety Eric Reid made his team-leading third interception and also recovered Larry Fitzgerald's fumble to stop an Arizona drive deep in 49ers territory in the third quarter. San Francisco forced four turnovers for the second straight game.
"You can't come into a place like this and do that against a team like this and expect to win," quarterback Carson Palmer said.
Palmer was 25 of 41 for 298 yards with a 75-yard touchdown pass to Fitzgerald, but inconsistent play plagued Arizona's offense again.
Fitzgerald didn't seem hampered by a tender hamstring when he got between two defenders as the 49ers tried for another interception, and his touchdown put Arizona ahead 7-6 late in the first quarter. Fitzgerald had a season-high 117 yards on six catches.
There was some question whether Fitzgerald would play, with the Cardinals gearing up for two games in a five-day stretch. The Seahawks visit the desert Thursday night. He played in his 96th straight game but also had the costly fumble with his team driving.
"I am not going to sleep at all. I let my team down in that situation," Fitzgerald said. "I wish I could take it back. We were driving, running the football, really the momentum in our favor and I got a little careless with the football. To be in a game that close you can't have those kinds of mistakes."
Trailing 22-14 late in the second quarter, the Cardinals missed a big opportunity to take momentum into halftime. Michael Floyd was flagged for offensive pass interference when he pushed Tarell Brown out of the way before making what would have been a 44-yard touchdown catch.
Floyd redeemed himself with a 10-yard TD reception midway through the third quarter on which he got by Brown in the left corner of the end zone. But Arizona failed on a 2-point conversion try, leaving the 49ers up 22-20.
The Cardinals' much-improved defense took a big blow when Campbell was carted off with 4:56 left. He was hurt when he landed awkwardly on a tackle of Gore.
"He left the field with movement and the feeling was coming back," coach Bruce Arians said. "He had numbness. It was precautionary."
Campbell's wife, Keyonne, posted an update on Twitter, saying: "Calais is doing okay. Thank you for continued well wishes and prayers. Will update soon."
After Fitzgerald scored, San Francisco took charge in a wild sequence.
Kaepernick's tipped pass intended for Bruce Miller near the goal line was intercepted by Yeremiah Bell. But San Francisco turned that bad break into a go-ahead safety when Corey Lemonier took Palmer down in the end zone for his first career sack, putting the 49ers ahead 8-7.
Two plays after Arizona's free kick, Kaepernick found Davis for the 61-yard TD.
Yet again, Arians referenced the "self-inflicted wounds."
The Niners managed just 6 total yards of offense over their initial four possessions, a trio of three-and-outs and a field goal. San Francisco turned two first-quarter interceptions returned to the 11 and the 7 only into a pair of field goals by Phil Dawson, who had three in all.
"We came out like a ball of fire," Cardinals right tackle Eric Winston said. "We just killed ourselves with turnovers, and we've got to figure out a way to stop giving the ball away. It's impossible to win in this league when you're giving them the ball. We've got to stop that. Until we do, we are not going to win tight division games like this."
Notes: Arizona outgained San Francisco 403-387. ... Fitzgerald has nine TD receptions in the past 12 meetings vs. San Francisco. His 12 career TD catches in the series match Andre Rison (12) for most all-time against Niners.
AP NFL website: www.pro32.ap.org