SANTA CLARA, Calif. -- With Carson Palmer sidelined by a concussion, the one-win Arizona Cardinals turned to Larry Fitzgerald, David Johnson and an opportunistic defense for a much-needed victory.
Drew Stanton threw two touchdown passes to Fitzgerald in the quarterback's first start in two years, Johnson ran for two scores and the Cardinals capitalized on San Francisco mistakes to beat the 49ers 33-21 on Thursday night.
"We were a hungry team, a team that knows that we dug a hole for ourselves and we had to win this game," coach Bruce Arians said.
The Cardinals (2-3) got 17 points off three turnovers by the 49ers (1-4) -- two interceptions by Blaine Gabbert and a fumbled kickoff return by Chris Davis -- and also had one drive extended by a running-into-the-kicker penalty.
Those three scoring drives totaled just 41 yards, but proved to be enough to beat the sloppy 49ers as the Cardinals survived a week with without Palmer out with a concussion.
"I don't think anybody played well on offense. Nobody," Niners coach Chip Kelly said. "I don't think we protected well enough, I don't think we threw it well enough and we had too many drops and two interceptions."
Stanton didn't produce much, going 11 for 27 for 124 yards. But Arizona didn't turn the ball over and got 157 yards rushing from Johnson to get the win. Johnson added 28 yards receiving, and Fitzgerald caught six passes for 81 yards as that duo combined to gain 266 of the team's 288 yards from scrimmage.
The defense did the rest with the two interceptions and seven sacks.
"We've been saying all week it just starts with one. Just get one win and try to stack them," defensive lineman Calais Campbell said. "We've been a team in the past that can rip off a bunch of them. ... Now we have to figure out what we can do to keep that ball rolling."
The game changed in a span of less than 4 minutes starting late in the second quarter. Campbell's interception of a deflected pass set up Arizona's first score on a 21-yard pass from Stanton to Fitzgerald with 1:40 left in the half. Davis' fumble of the second-half kickoff then set up Johnson's 4-yard run that put Arizona up for good.
"We got the momentum going," Stanton said. "Unfortunately, I think, it's one of those things as an offense you're waiting to make a play, and got that spark from the defense. Then to come out in the second half and get the ball right there was huge."
We want Kap
There were several thousand empty seats at the game but the fans who did show up were frustrated by what they saw. At one point in the third quarter, a chant of "We want Kap! We want Kap!" started up as fans wanted to give former starter Colin Kaepernick a shot at quarterback. Gabbert responded by leading an 82-yard TD drive fueled in part by his 24-yard run.
The chants started again after Gabbert threw his second interception.
Gabbert finished 18 for 31 for 162 yards and Kelly would not address whether it was time to make a quarterback change.
"We're 1-4. We're going to look at everything," he said. "We have to make sure we're giving our team the best chance to go out and win."
Jeremy Kerley, acquired two weeks before the start of the season in a trade with Detroit, has quickly established himself as Gabbert's most trusted receiver. After nine straight punts to open the game, Gabbert completed four passes for 63 yards on one drive in the second quarter, capped by a 9-yard TD pass to Kerley.
The first quarter featured six drives, six punts, zero points and only five completed passes as both offenses struggled mightily. Gabbert and Stanton missed open receivers, had other throws dropped and neither offense could generate much of anything.
Markus Golden and Campbell each had two of Arizona's seven sacks as the Cardinals put constant pressure on Gabbert. Pass protection had been one of the few positives on offense for the 49ers, who had allowed just three sacks the first four games.