Charlotte, N.C. — Cam Newton delivered the body blow and Jonathan Stewart provided the knockout punch for Carolina.

Newton’s 62-yard run set up Stewart’s 1-yard touchdown leap — his third TD run of the day — with 1:47 remaining to lift the Panthers to a 31-24 victory Sunday, snapping the Minnesota Vikings’ eight-game win streak.

Stewart accounted for 103 of Carolina’s 216 yards rushing — including a 60-yard touchdown burst in the first quarter — against the league’s second-ranked defense, as the Panthers prevented the Vikings (10-3) from clinching the NFC North division title.

But it was Newton’s run that turned out to be the play of the game.

After Carolina squandered an 11-point fourth-quarter lead, Newton rolled out to his left, saw an opening and the 6-foot-5, 245-pound quarterback was off to the races before being pulled down from behind at the Vikings 8.

“It was very strategic, when I think back,” the 2015 league MVP said with a smile. “Because if I would have scored, they would have had all of their timeouts left..”

“There’s only one guy in the league that is doing that,” tight end Greg Olsen said of Newton’s scramble.

“We had everything against us and we had struggled out last three possessions. And for him to pop something that like, that was huge.”

Said Vikings defensive tackle Linval Joseph: “He is a first-round draft pick, a Heisman Trophy winner and a great player. He makes plays.”

More NFL games

(At) Pittsburgh 39, Baltimore 38: Chris Boswell made a 46-yard field goal with 42 seconds left and Pittsburgh’s defense overcame a sloppy night to stop one Baltimore’s last-gasp drive.

The Steelers (11-2) trailed by 11 points going into the fourth quarter but capped an emotionally trying week following Ryan Shazier’s spinal injury to rally for their eighth straight victory and AFC Northtitle in four years.

Ben Roethlisberger threw for 506 yards and two touchdowns, becoming the first quarterback in NFL history to top 500 yards passing three times. Antonio Brown caught 11 passes for 213 yards, including two long gains in the fourth quarter that allowed the Steelers to recover after blowing an early 14-point lead. Le’Veon Bell (Michigan State) had 125 yards of total offense and scored three touchdowns.

Baltimore’s Joe Flacco threw for 269 yards passing with two touchdowns and one interception but was strip-sacked by rookie linebacker T.J. Watt on the Ravens’ final snap. Alex Collins ran for 120 yards and a touchdown for the Ravens (7-6).

(At) Buffalo 13, Indianapolis 7 (OT): LeSean McCoy scored on a 21-yard run with 1:33 left in overtime for the Bills.

McCoy finished with 156 yards rushing and topped the 1,000-yard mark for the sixth time in his career on a slick, snow-covered field.

The Bills’ sideline erupted after McCoy’s touchdown, with numerous players running on to the field to either make snow angels or engage in celebratory snowball fights.

Buffalo (7-6) is alive in the AFC playoff picture.

Green Bay 27, (at) Cleveland 21 (OT): Brett Hundley threw a 25-yard touchdown pass to Davante Adams in overtime as the Packers rallied from a two-touchdown deficit in the fourth quarter. Cleveland fell to 0-13.

On third-and-6, Hundley threw a short pass to Adams, who broke a tackle and went in untouched with 5:05 left as the Packers (7-6) won in overtime for the second straight week.

(At) L.A. Chargers 30, Washington 13: Philip Rivers passed for 319 yards and two TDs, and the Chargers continued their ferocious playoff push with their fourth straight victory,.

Tyrell Williams caught a 75-yard touchdown pass and Hunter Henry had another scoring grab for the Chargers (7-6), who have won seven of nine after an 0-4 start to their relocation season.

(At) Kansas City 26, Oakland 15: Kareem Hunt ran for 116 yards and a touchdown and the Chiefs shut down Derek Carr and his offense to snap a four-game losing streak.

Alex Smith threw for 268 yards and Charcandrick West had a touchdown run for the Chiefs, who held the Raiders without points until Marshawn Lynch’s 22-yard run with 8:51 to go.

Dallas 30, (at) N.Y. Giants 10: Dak Prescott threw three TD passes and the Cowboys spoiled Steve Spagnuolo’s debut as interim coach, as well as the return of quarterback Eli Manning to the Giants’ starting lineup.

Prescott threw a go-ahead 20-yard score to Jason Witten with 7:38 to play. Rod Smith scored on an 81-yard pass play with 4:08 left and added a 15-yard scoring run a little more than a minute later after an interception by Sean Lee. Prescott also threw a 50-yard scoring pass to Dez Bryant.

San Francisco 26, (at) Houston 16: Jimmy Garoppolo threw for a career-high 334 yards and a touchdown to help the 49ers to their second straight win.

The game was tied when he found Garrett Celek on a 6-yard touchdown pass with about two minutes left in the third quarter to make it 23-16.

(At) Jacksonville 30, Seattle 24: Blake Bortles threw two perfect passes for touchdowns, Jaydon Mickens set up another score with a 72-yard punt return for the Jaguars.

The Jaguars (9-4) intercepted three passes by Russell Wilson, including two on deep balls, and won for the sixth time in their last seven games.

(At) Arizona 12, Tennessee 7: Phil Dawson kicked four second-half field goals and the Arizona Cardinals shut down Tennessee’s offense.

Dawson connected from 47, 23, 32 and 35 yards and missed from 40 for the Cardinals (6-7).

(At) Denver 23, N.Y. Jets 0: The Broncos snapped their longest losing streak since joining the NFL in 1970 thanks to wide receiver Demaryius Thomas, who caught eight passes for 93 yards and a touchdown for the Broncos (4-9).

This was their first shutout since Nov. 20, 2005, a 27-0 win over the Jets.