After the 49ers made it a four-point game in the third quarter, the Cardinals responded to begin the fourth.
Kicker Phil Dawson gave the Cardinals a 17-10 lead with a 25-yard field goal.
On the drive, running back Adrian Peterson passed 100 yards for the game and added to his milestone performance.
The Cardinals led, 17-10, with 13:31 left in the game.
Call hurts Cards, Beatham scores TD
An overturned call hurt the Cardinals to open the second half.
Cardinals defender Kareem Martin was originally credited with a strip sack of CJ Beathard, but the call was overturned and it was ruled an incomplete pass.