CHARLOTTE, N.C. (AP) - Cam Newton completed 19 of 25 passes for 247 yards and two touchdowns, Christian McCaffrey racked up 157 yards from scrimmage and scored twice and the Carolina Panthers built an early lead and held on to beat the Tampa Bay Buccaneers 42-28 for their 10th straight home win Sunday.

Newton threw TD passes of 19 yards to Curtis Samuel and 17 yards to Greg Olsen, the seventh straight game he has thrown for at least two touchdowns. McCaffrey had 17 carries for 79 yards and five catches for 78 yards and turned in the play of the game when he leaped over a defender after a reception in the flat and kept going, turning it into a 32-yard gain.

The Panthers (6-2) scored touchdowns on five straight possessions during the first half to build a commanding 35-7 lead before the Buccaneers battled back to within a touchdown early in the fourth quarter behind Ryan Fitzpatrick.

But the return of "Fitzmagic" wasn't enough as Newton made it a two-possession game when he found Samuel, who made a leaping grab in the end zone with 9:10 left in the game. It was the second-year wide receiver's second TD of the game. He also scored on a 33-yard reverse.

Fitzpatrick, who started in place of the turnover-prone Jameis Winston for Tampa Bay (3-5), finished with 243 yards passing and four touchdowns - two each to Adam Humphries and O.J. Howard.

But Fitzpatrick also had a key interception on the game's second possession leading to Carolina's first touchdown of the game, a 1-yard run by fullback Alex Armah. He was also picked off late in the fourth quarter by rookie cornerback Donte Jackson, sealing the win.

NATIONAL ANTHEM

Panthers safety Eric Reid took a knee during the national anthem to protest racial and social injustice.

INJURIES

Buccaneers: None reported.

Panthers: Reid left in the fourth quarter with a shoulder injury, but returned to the game.

UP NEXT

Buccaneers: Host Washington on Sunday.

Panthers: Play four of their next five games on the road, beginning Thursday night at Pittsburgh.