Hoyer exhibited poise in the early moments. He completed seven of his first 13 passes and three straight — for 7, 15 and 12 yards — during one drive as Arizona took a 3-0 lead on Jay Feely's 35-yard field goal late in the first quarter. Feely added a 31-yarder early in the second to make it 6-0.
The Cardinals outgained the 49ers 129-15 in the opening quarter and held San Francisco without a first down.
But that didn't last long.
The Cardinals ended a six-game stretch without a touchdown pass when Hoyer hit Michael Floyd on a late 37-yard score. Floyd had eight catches for 166 yards.
The Cardinals pounded the ball toward the right side of San Francisco's defensive line where Pro Bowler Justin Smith had been stout against the run all season before getting hurt two weeks ago. Now, San Francisco has an extra week for Smith to heal.
"Today's game kind of mirrored our season," Whisenhunt said. "I'm proud of the way our team's worked. You understand this is part of the business. We haven't won enough games this year."
Former starting quarterback Alex Smith made what could have been his final appearance in a 49ers uniform when he entered the game with 5:57 to go — playing to chants of "Let's Go, Alex!" and "Alex! Alex!"
Notes: Cardinals Pro Bowl CB Patrick Peterson was lost to a left hamstring injury in the fourth quarter. RG Pat McQuistan was sidelined in the first with an ankle injury and didn't return, while LB Paris Lenon injured his left hand in the second half. ... 49ers LB Aldon Smith went without a sack for the third straight game, winding up with 19½ — three shy of Michael Strahan's single-season NFL record set in 2001 for the Giants.
Online: http://pro32.ap.org/poll and http://twitter.com/AP_NFL
Copyright 2012 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.