GLENDALE, Ariz. -- The end result Sunday was what the Arizona Cardinals wanted.
They needed a win -- badly, desperately -- if they wanted to keep their season on track. They got that. Their 18-15 win against the San Francisco 49ers in overtime moved Arizona to 2-2 and a game behind the first-place Los Angeles Rams in the NFC West.
But it's how the Cardinals got there that should have this team concerned. The Cardinals' offense nearly cost them another game. It wasn't just one player or one area. It wasn't just Carson Palmer throwing an ill-advised pass for an interception or the offensive line giving up six sacks for the second straight game or dropped passes. It was a collective effort.
In the end, yes, that collective effort won the game, but one drive can't mask the ugliness that defined the first 57 minutes, 36 seconds. The offense couldn't produce a touchdown in regulation, which was a large reason the game went into overtime after four field goals by kicker Phil Dawson saved the day.
"We were fortunate to win that game," tight end Jermaine Gresham said. "We would like to put a lot more points on the board. It's simple."
It's also necessary.
If 49ers quarterback Brian Hoyer had been Carson Palmer-accurate Sunday, the Cardinals would be sitting at 1-3 right now. He let Arizona hang around, and the offense, for the most part, took advantage. It had drives of 14, 13, 10 and nine plays. Together those drives produced six points.
Arizona couldn't take advantage of an interception by Antoine Bethea that put the Cardinals at San Francisco's 40. They managed only 5 yards in three plays and settled for a field goal.
Arizona's opening possession -- the 13-play drive -- ended on the 3-yard-line after Palmer, who was hit and on his way down, thought he could hit Gresham in the back of the end zone. It was picked off by San Francisco linebacker Ray-Ray Armstrong. It's one of those plays that if Palmer hit Gresham, it would've been hailed as genius, improvisational, experience shining through. But the opposite of those is what happened and Palmer said he wasn't frustrated by the lack of touchdowns after long, time-consuming drives.
"It's the game," he said. "It was one of those games where we felt very good with our defense matching up with their offense and field goals are OK sometimes. They're frustrating for everybody but us. We try not to let those things frustrate us. I like our group with a chance to win it at the end."
A sack on third-and-4 early in the second half ended that drive, as Dawson hit this third field goal of the day.
When Palmer had time to make better decisions, he moved the offense up and down the field with relative ease. The return of wide receiver John Brown from a lingering quad injury helped immensely. Palmer says he believes there was a fear in the Niners when Brown, who caught three passes for 47 yards, was on the field. Running back Chris Johnson felt the game slowed down for him Sunday after he made his first start in almost two years on Monday night.
But the time Palmer had to throw eventually ran out.
The patchwork offensive line, which was missing its starting left side, tackle D.J. Humphries and guard Mike Iupati, as well as Iupati's backup, Alex Boone, held up for most of the first half. Palmer wasn't sacked until there was 3:10 left in the first half. That means he was sacked five times in the final two quarters. In all, Palmer was hit 16 times.
"Carson was under duress and got hit a lot," Larry Fitzgerald said.
"He's as tough as they come. He never flinches, never wavers and we're happy to have him as our quarterback."
But those hits took a toll on Palmer.
"I'm tired but hopefully we have a walk-through Wednesday and we don't have to practice. We came off a short week against a team that had a long week with a lot of chances to recover, and they're a very young team. But I have a multistep process for myself that I go through to get ready for Sundays and I'll be ready."
This game could've ended up quite differently.
Two potential touchdown catches were reviewed. One, Andre Ellington's falling 12-yard catch early in the second quarter, was ruled a touchdown and then overturned because Ellington didn't have possession of the ball going down to the ground. The other was Brown's 25-yard catch that was ruled incomplete because his second foot didn't come down in bounds, although the replay made it look awfully close to a touchdown.
The second play wouldn't have been necessary if the first was ruled a touchdown.
Arizona also was flagged for 10 penalties for 80 yards, including three holding flags on right guard Evan Boehm. At least one negated a 13-yard run by Johnson, who helped kick-start the offense.
The Cardinals finally found what they were looking for the entire game in the last three minutes of overtime when they had to figure out a way to win, Gresham said.
Palmer led Arizona on a seven-play, 75-yard drive that ended with a 19-yard game-winning touchdown pass to Fitzgerald.
After nearly 70 minutes of not being able to get near the end zone, the Cardinals smoothly finished a drive when they needed it most.
"When we're in two-minute, it worked before," coach Bruce Arians said. "We protected better. We gave [Palmer] a chance."
That was all Palmer needed.
All that's needed now is for the Cardinals to start scoring more touchdowns.
"We got to fix it," Johnson said. "We just got to clean, get better and better. That is something coming into this game we knew we were better at. Just got to get back to practice and see where it went wrong. Just try to correct it."