Brad Johnson threw for 271 yards and three touchdowns to help end a four-game skid. The Vikings had scored just four offensive touchdowns and Johnson had nine interceptions and one touchdown during the streak.
Troy Walters' fumbled punt in the third set up Jeff Dugan's 3-yard catch that made it 31-13.
Adrian Wilson's 99-yard fumble return and Matt Leinart's 9-yard pass to Anquan Boldin with 39 seconds left made it 31-26. Arizona's Darryl Blackstock recovered the onside kick, but Leinart's heave into the end zone was intercepted by Dwight Smith.
NOTABLE: Before Sunday, Arizona's Dennis Green, 97-62 with the Vikings, last coached in the Metrodome on Dec. 23, 2001, a 33-3 loss to Jacksonville.