MINNEAPOLIS -- Minnesota's turnaround season already includes a decisive victory over a Super Bowl favorite, San Francisco.

The Vikings showed they can win a close one when they beat Jacksonville in the opener in overtime. Now they've proven they can pull out an ugly game, even with a passing game rendered impotent for an entire half.

Adrian Peterson and a relentless pass rush were enough for the Vikings to defeat Arizona 21-14 on Sunday and hand the Cardinals their third straight loss.

Christian Ponder completed only one pass for 4 yards after halftime and finished 8 for 17 for 58 yards and two interceptions.

Peterson ran 23 times for a season-high 153 yards and a first-quarter touchdown, and the Vikings (5-2) sacked John Skelton seven times to raise Arizona's league-leading total to 35 allowed this year.

Ponder threw a second-quarter touchdown pass to Percy Harvin, but the Vikings punted five straight times after Harrison Smith's 31-yard interception return for a touchdown. The last four were three-and-out possessions.

John Skelton hit Andre Roberts for a 6-yard scoring pass with 1:48 left to pull the Cardinals (4-3) within one score, but they tried an onside kick and Peterson ended the game with a tough inside run for just Minnesota's second first down of the second half.

Skelton went 25 for 36 for 262 yards and two turnovers, taking the job back from Kevin Kolb, whose damaged ribs will keep him out until at least Thanksgiving. Many of the throws he missed were way off the mark, but the lack of time he had in the pocket made it difficult to judge his performance.

Antoine Winfield delivered a jarring stop on fourth-and-1 at the Minnesota 17 midway through the third quarter when Skelton rolled out. Then with 6:16 left on fourth-and-10, Skelton was taken down near midfield in a swarm led by Williams.

After starting 4-0, the Cardinals have scored a total of 33 points. Their brightest spot on Sunday was LaRod Stephens-Howling, who scored on a short touchdown run after Ponder's first interception and finished with 104 yards on 20 carries and 45 yards on four catches.

For the third straight year, Fitzgerald's visit to his hometown was ruined. The Cardinals haven't won here since 1977, when they played in St. Louis and the Vikings played outdoors. They've been inside since 1982, and the roof and the turf have long played to the defense's advantage when the visiting team is behind and passing becomes more important.

Copyright 2012 by The Associated Press. All rights reserved. Material may not be redistributed.