Carolina's defense allowed only three points for the second straight week, and Graham Gano converted three field goals as the Panthers held on to defeat the Buffalo Bills 9-3 on Sunday.
The Panthers (2-0) held Tyrod Taylor and LeSean McCoy in check all day, limiting the Bills (1-1) to 176 yards and 10 first downs. McCoy had 9 yards on 12 carries and Taylor had 125 yards passing. The Panthers had three sacks, two by Julius Peppers in his first home game since re-signing with them.
The Panthers needed a late stop to seal the win.
Buffalo rookie Zay Jones tried to make a diving catch on fourth-and-11, but couldn't haul in the pass at the Carolina 3 with 9 seconds remaining.
The Panthers have not allowed a touchdown in two games after beating San Francisco 23-3 in Week 1.
Cam Newton was 20 of 32 for 228 yards but was sacked six times by Sean McDermott's defense. McDermott was Panthers defensive coordinator for the previous six seasons before taking over as head coach of the Bills earlier this year.
The Panthers lost tight end Greg Olsen in the second quarter to a foot injury.
The Bills were outgained 193-39 in the first half, but only trailed 6-0 because of their defense. Buffalo had three first-half sacks of Newton, including one that took the Panthers out of field goal range.
TAYLOR MOVES UP: With his 9-yard completion on the opening drive, Taylor moved into seventh place on the team's all-time passing yards list, passing Dennis Shaw (6,286). Taylor now has 6,291 passing yards.
McCoy has reached the 3,000 yards receiving mark for his career. He is the fourth active running back to achieve the feat, joining Darren Sproles, Matt Forte and Frank Gore.
GETTING HIS KICKS: Gano was locked in a kicking battle in the preseason, but is 6 for 6 on field goal attempts so far this season.
Bills OT Cordy Glenn injured his ankle and did not return. Bills DT Marcell Dareus left the game briefly with an ankle injury but did return.
Olsen left in the second quarter with a foot injury and did not return. Panthers WR Kelvin Benjamin left after taking a brutal hit to his left shoulder in the end zone from Bills FS Jordan Poyer, but did return.
Bills: Host Denver next Sunday.
Panthers: Host New Orleans next Sunday.