CHARLOTTE — With running back Jonathan Stewart back in action and enough big plays on defense in the first half, the Carolina Panthers had just enough to advance in the NFC divisional playoffs.

Stewart rushed for 106 yards and two touchdowns in his first game since a foot injury as the Panthers built a huge early lead in a 31-24 victory against the Seattle Seahawks on Sunday afternoon at Bank of America Stadium.

“We played a helluva a first half,” Panthers defensive tackle Dwan Edwards said. “We want to find a way we can sustain that through the whole game.”

The Panthers (16-1) will be home next Sunday night against the Arizona Cardinals in the NFC championship game. Carolina holds a 12-game homefield winning streak.

Quarterback Cam Newton was 16-for-22 passing for 161 yards and a touchdown and Stewart, after missing the final three regular-season games, had 19 carries in becoming the first running back this season to top 100 yards against Seattle’s No. 1-ranked scoring defense.

“It’s great for us and our morale to have our Pro Bowl running back out there,” Carolina fullback Mike Tolbert said.

Carolina scored the first 31 points before Seattle rallied in the second half.

“We got conservative,” Newton said, adding that players had to trust in coaching and they believed in their plan.

The Panthers did not score in the second half.

“When you start like that, it’s going to be tough,” Seahawks wide receiver Jermaine Kearse said. “We ran out of time.”

The Seahawks (11-7), who are the two-time defending NFC champions, were unable to overcome a rough start from quarterback Russell Wilson. After his second pass of the game was returned by linebacker Luke Kuechly for a touchdown, Wilson finished 31 of 48 for 366 yards with two interceptions and three second-half touchdown throws.

Wilson’s 3-yard touchdown pass to Kearse pulled the Seahawks to within 31-21 with 6:04 left. Steven Hauschka’s 36-yard field goal with 1:12 kept Seattle’s hopes alive.

Carolina linebacker Thomas Davis recovered the ensuing onside kick.

“We’ve started to learn how to finish games,” Kuechly said. “Regardless if they made a comeback, we were going to make enough plays.”

Seattle isn’t accustomed to such an early end to its postseason.

“Every loss is hard,” Seahawks defensive end Michael Bennett said. “It doesn’t matter when. But this is the playoffs and that’s how it is.”

Kuechly and cornerback Cortland Finnegan collected interceptions on two of Wilson’s first four passes as part of the early plethora of big plays that went Carolina’s way.

Carolina built a 21-0 by the second play of the second quarter, with Stewart leaping into the end zone from 1 yard away.

Finnegan’s pick set up Graham Gano’s 48-yard field goal and a 24-0 lead.

Tight end Greg Olsen’s diving catch in the end zone completed a 19-yard pass play from Newton, pushing the margin to 31-0 with 6:26 to go in the second quarter.

The half ended with Hauschka’s 55-yard field goal attempt falling short.

The momentum eventually turned.

“We always have faith in each other,” Seattle linebacker Bobby Wagner said. “That’s why we came back.”

The Seahawks began the second half with better fortune, scoring in less than two minutes. Wilson threw 13 yards to Kearse for Seattle’s first points.

Wilson hit wide receiver Tyler Lockett for a 33-yard score on the Seahawks’ next possession, so it was 31-14 midway through the third quarter.

With a chance to pull closer, Seattle pulled off a fake punt and moved into Carolina territory before a sack of Wilson thwarted the threat. The Panthers got the ball back with 26 seconds to go in the third quarter and consumed more than 5 1/2 minutes.

The Panthers led 14-0 less than 3 1/2 minutes into the game.

Stewart ran 59 yards on the game’s first play from scrimmage. Three plays later, he scored from 4 yards out.

On Seattle’s second snap, Kuechly intercepted Wilson’s hurried pass and returned it 14 yards for a touchdown.

Carolina’s second-half offensive snafus were of concern.

“We did a lot of great things offensively in the first half,” center Ryan Kalil said. “We just have to be more consistent.”

Seattle running back Marshawn Lynch, who had been out since Week 10 and underwent abdominal surgery Nov. 25, didn’t make much of an impact in his return. He had six carries for 20 yards and two catches for 15 yards.