Jonathan Stewart ran for 103 yards and three touchdowns, and the Carolina Panthers snapped the Minnesota Vikings' eight-game winning streak with a 31-24 victory Sunday.
Cam Newton threw for 137 yards and a touchdown and ran for 75 yards as the Panthers (9-4) racked up 216 yards on the ground against the league's No. 2 ranked defense to pull even with the Saints atop the NFC South standings.
Carolina sacked Case Keenum six times and forced three turnovers to keep the Vikings (10-3) from clinching the NFC North division title.
After the Panthers squandered an 11-point fourth quarter lead, Newton broke free of the pocket and raced 62 yards for a key first down with 2 minutes remaining. Stewart scored his career-high third TD when he jumped over the line of scrimmage, reaching the ball across the goal line for a 31-24 lead.
Minnesota couldn't manage a first down on its final drive and turned the ball over on downs.
The Panthers seemed in control midway through the fourth quarter leading 24-13 after Newton made an off-balance throw to Devin Funchess for an 18-yard touchdown, and Mario Addison's strip-sack set up Graham Gano's field goal.
But the Vikings came charging back to tie it as Keenum hooked up on a 52-yard scoring strike on a crossing route. Blake Bell added 2-point conversion catch to cut the lead to three.
On Carolina's next possession, Vikings safety Andrew Sendejo intercepted Newton on a ball that sailed off the hands of Christian McCaffrey and returned it to the Carolina 6. But Carolina's defense had a huge stop, holding the Vikings to a field goal leaving the game tied with 3:07 left.
Vikings: Linebacker Emmanuel Lamur left game with a foot injury and did not return.
Panthers: Tight end Greg Olsen left briefly after re-injuring his foot, but did return.
Vikings: Host the Bengals next Sunday.
Panthers: Host the Packers next Sunday.