CHARLOTTE, N.C. -- Remembering what wide receiver Kelvin Benjamin can do was something the Carolina Panthers could appreciate Sunday afternoon.
Benjamin, who missed all of the 2015 season following a strong rookie year, was back in form with two touchdown receptions as the Panthers overcame a series of mistakes for a 46-27 victory against the San Francisco 49ers at Bank of America Stadium.
"I'm good and I'm glad to be out there," Benjamin said, downplaying his contributions. 'It's only the second game of the season."
Cam Newton threw four touchdown passes, including a pair in the third quarter to Benjamin, as the Panthers (1-1) opened their home schedule with a big offensive game.
Benjamin, who sustained a torn anterior cruciate ligament in the 2015 training camp, made a team-high seven catches for 108 yards.
"He is special, makes my life extremely easy," Newton said. "Helps me a lot."
At 6-foot-5 and 245 pounds, Benjamin became a matchup problem for the 49ers' secondary.
"He's a big body," San Francisco safety Antoine Bethea said. "They had a couple guys out there with big frames. Cam just puts the ball within their wide catch radius and (Benjamin) just goes up and catches it."
Newton completed 24 of 40 throws for 353 yards as Carolina bumped its franchise-record home winning streak to 14 games.
San Francisco quarterback Blaine Gabbert was 17 for 36 for 243 yards and two touchdowns and two fourth-quarter interceptions. The 49ers (1-1) didn't score in the second half until a pair of Panthers' turnovers put them in prime position in the fourth quarter.
Gabbert's 75-yard touchdown pass to tight end Vance McDonald closed what had been a 21-point deficit to 34-27 with 7:51 to play.
"We just kept saying that we got to believe," Bethea said. "We've got to play hard until that clock rolls off. We've got to just keep pushing and plugging and see what happens."
Graham Gano's 49-yard field goal with 4:08 to play gave Carolina a 10-point lead.
Carolina running back Fozzy Whittaker gained career-high 100 yards on 16 carries, mostly after starting Jonathan Stewart left the game with a hamstring injury.
"Fozzy picked up the rifle and kept shooting," Newton said. "... I'm not sure what (Stewart's) injury is, but I'm confident in Fozzy picking up the torch."
The 49ers scored only 13 points off four Carolina turnovers.
"We can't keep going on those lulls," Newton said. "It seems like a time we were taking turns messing up."
Gabbert's 28-yard touchdown strike to receiver Torrey Smith gave the 49ers a 10-7 lead in the second quarter.
Less than 30 seconds later, San Francisco's defense gave up its first points of the season. Panthers tight end Greg Olsen broke free down the middle and collected Newton's pass for a 78-yard touchdown play. That was the longest scoring play of Olsen's 10-year career.
"I felt like there were plays out there where you had to make the play," 49ers linebacker NaVorro Bowman said. "They did a good job executing and going on with their game plan."
"My whole mindset was to just scoop and score," Thompson said.
Gano's 41-yard field goal with 1 second left in the half pushed the lead to 17-10.
The Panthers opened the second half with a drive lasting almost five minutes, capped by Newton's 10-yard touchdown throw to Benjamin. They hooked up for a 9-yard touchdown play less than four minutes later.
It didn't start so smoothly for Carolina.
Newton was intercepted by Bethea on the second snap of the game. But all the 49ers could muster was Phil Dawson's 29-yard field goal.
Newton's fourth-quarter fumble on a scramble resulted in Dawson's 39-yard field goal. That came one play after Gabbert was sacked for the first time this season. In two games, he threw a total of 60 passes before taking a sack.
But after Ted Ginn Jr. fumbled the ensuing kickoff, Gabbert ran 1 yard on the next play for a touchdown, pulling the 49ers within 31-20 with 12:31 remaining.
NOTES: These former NFC divisional rivals hadn't met since San Francisco won in the 2013 playoffs in Charlotte. ... QB Cam Newton's third touchdown throw of the day gave him the Carolina franchise record for touchdown passes at 121, one more than Jake Delhomme. ... Panthers RB Jonathan Stewart left in the first quarter with a hamstring injury and didn't return. ... Early in the second quarter, Panthers RB Fozzy Whitaker was evaluated for a concussion after fumbling, but he passed the protocol and returned to the game. ... LB Ray-Ray Armstrong of the 49ers left in the second half with a shoulder injury. ... The 49ers have an NFC West matchup next week at Seattle. ... The Panthers stay home to face the Minnesota Vikings in Week 3.