CHARLOTTE, N.C. -- Jonathan Stewart's third touchdown run of the game was a 1-yard leap with 1:47 remaining, lifting the Carolina Panthers past the Minnesota Vikings 31-24 on Sunday afternoon at Bank of America Stadium.
The Panthers (9-4) pulled into a tie for first place in the NFC South with the New Orleans Saints. The Vikings (10-3) had an eight-game winning streak snapped.
Carolina quarterback Cam Newton ran 62 yards on second down to take the ball to the Minnesota 8-yard line to set up the winning score.
The Vikings failed to pick up a first down after Carolina's go-ahead score.
Newton completed 13 of 25 passes for 137 yards with a touchdown and an interception. Stewart gained 103 yards on 16 carries.
Vikings quarterback Case Keenum was 27 of 44 for 280 yards with two touchdowns and two interceptions.
Minnesota had a chance to take the lead late in the game, though it was thwarted by Carolina's goal-line stand.
Safety Andrew Sendejo's interception of a third-down pass off running back Christian McCaffrey's hands gave the Vikings the ball at the Carolina 6 following a 34-yard return with 4:36 remaining.
The Vikings lost 3 yards, settling for Kai Forbath's tying 27-yard field goal.
Trailing 24-13, Minnesota drove more than 50 yards in the fourth quarter. Then receiver Stefon Diggs bobbled a pass that was intercepted by James Bradberry with 8:48 remaining to thwart a scoring chance.
The Vikings were back in business by the 5:36 mark, when Adam Thielen made a 52-yard catch and run for a touchdown. Keenum connected with tight end Blake Bell on a two-point conversion.
Carolina held a 21-13 lead after its first possession of the second half. Newton escaped pressure and threw 18 yards to receiver Devin Funchess for a touchdown.
A strange turnover on a fumble by Keenum, who was trying to throw a pass, gave Carolina the ball right back at the Minnesota 31. That resulted in Graham Gano's 41-yard field goal.
Keenum took a third-down sack on the next possession that knocked the Vikings out of field-goal range, so there was a punt instead.
Another third-down sack in the opening minute of the fourth quarter came before a missed 54-yard field goal from Forbath.
The Panthers led 14-13 at halftime despite the Vikings compiling 200 yards of total offense.
Stewart scored from 1 yard out in the opening minute of the second quarter, capping a 14-play, 89-yard drive that consumed more than seven minutes and included a pair of personal-foul facemask penalties. That put the Panthers on top 14-7.
Minnesota's first possession ended after one first down with Daryl Worley intercepting Keenum.
Three snaps later, Stewart burst up the middle for a 60-yard touchdown run.
The Vikings tied the game with tight end Kyle Rudolph's 18-yard catch from Keenum.
Forbath had second-quarter field goals from 30 and 22 yards for the Vikings, the latter of those with seven seconds left in the half on the play after Minnesota had a touchdown wiped out on an official replay review. Thielen was ruled to not have control of the ball in the end zone.
NOTES: It was 41 degrees at kickoff. ... Vikings RT Mike Remmers, a first-year member of the team after playing for Carolina, remained out of the lineup as he has missed more than a month. ... TE David Morgan (concussion) also remained inactive for the Vikings. ... Vikings backup LB Emmanuel Lamur didn't return after going out with a foot injury. ... Panthers LB Shaq Thompson was out with a foot injury, replaced in the starting lineup by LB David Mayo. ... Newly signed LB Spencer Paysinger was on the field for the opening kickoff as part of Carolina's coverage unit. ... The Vikings are home next Sunday against the Cincinnati Bengals. ... This was the beginning of a three-game homestand for the Panthers, who meet Green Bay next Sunday.