MINNEAPOLIS -- Adrian Peterson and a dominant Minnesota defense put the Vikings back on track, even if Christian Ponder and the passing game fell further out of sync.
Peterson ran 23 times for 153 yards and a first-quarter touchdown and the Vikings survived an ugly second half to hang on and beat Arizona 21-14 Sunday to hand the Cardinals their third straight loss.
Percy Harvin caught Ponder's only touchdown pass, but Ponder committed another costly turnover, an interception that led to a second-quarter touchdown run by LaRod Stephens-Howling. Ponder has seven turnovers in the last three games; two of them were turned into touchdowns last week at Washington.
The Vikings (5-2) had four straight three-and-outs into the thick of the fourth quarter, and Ponder finished 8 for 17 for 58 yards and two interceptions. But the defense forced John Skelton into a flurry of off-target throws and sacked him seven times. Antoine Winfield delivered a jarring stop on fourth-and-1 at the Minnesota 17 midway through the third quarter. With 6:16 left on fourth-and-10, Skelton was taken down near midfield.
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 instead of trying to force another punt and Peterson ended the game with a tough inside run for just Minnesota's the second first down of the second half.
Skelton went 25 for 36 for 262 yards and two turnovers. Rookie Harrison Smith returned an interception 31 yards for a touchdown in the first minute of the second half, giving the Vikings enough of a cushion to withstand the offensive woes down the stretch.
This was a crossroad game for both of these surprise strong NFC starters, a mutual opportunity to not only get back on track after a loss the week before but pad the record before a brutal stretch on the schedule.
Minnesota's test comes later, with two games each against division rivals Chicago and Green Bay plus a trip to AFC front-runner Houston in the final six weeks. Arizona's is now, with a game against San Francisco next Monday and a trip to Green Bay before the bye. After that, the Cardinals play at unbeaten Atlanta.
Harvin, as he did at Detroit, caught the opening kickoff and sped through the coverage for a touchdown. This time, it didn't count, called back by an illegal block penalty on an unnamed player. But a little later, Peterson polished a five-play, 88-yard drive with a classic, two-cut zigzag through the middle for a 13-yard touchdown.
The Vikings lost last week with field goals the first three times they had the ball, inside the 10 each time. But they at least put those red-zone struggles to rest for now. On third-and-goal at the 3 in the second quarter, Ponder found Harvin flying across the field parallel to the line and flicked him the ball for the short touchdown to put the Vikings in front 14-7.
Ponder was picked off again by Sam Acho on an ill-advised throw with seconds left before halftime after a strange decision by the Vikings to pass three straight times inside their own 25 but take their time doing it. Jay Feely, though, missed a 47-yard field goal as time expired.
The Cardinals sure weren't sympathetic to the offensive problems, with their top two running backs on injured reserve, a second quarterback switch six weeks into the season and a line that's been a sieve. After starting 4-0, they've scored a total of 33 points.
The 5-foot-7, 185-pound Stephens-Howling showed some elusive ability and ran hard after the initial contact, one bright spot for the Cardinals. He finished with 104 yards on 20 carries and 45 yards on four catches.
Skelton took an 8-4 record as a starter into the game. He won the job out of training camp but sprained his right ankle in the opener, giving the spot back to Kolb, whose damaged ribs will keep him out until at least Thanksgiving.