When DeAngelo Williams wasn't racing through huge holes, Jonathan Stewart was running over would-be tacklers as the Carolina Panthers set a franchise record for yards rushing for the second time in a month.

CHARLOTTE, N.C. — When DeAngelo Williams wasn't racing through huge holes, Jonathan Stewart was running over would-be tacklers as the Carolina Panthers set a franchise record for yards rushing for the second time in a month.

But this wasn't against some winless team.

By carving up the Tampa Bay Buccaneers' stout defense for a staggering 299 yards on the ground in a 38-23 win on Monday night, the Panthers issued a warning to the rest of the league: ignore Carolina at your own peril.

"I wouldn't necessarily call it a statement game," defensive end Julius Peppers said. "It was just a game with a lot on the line."

Like the outright lead in the NFC South, and continuing hope of grabbing a No. 1 seed in the playoffs. The Panthers (10-3) also avenged their worst loss of the season by pulling away in the fourth quarter against the Buccaneers (9-4), who had their four-game winning streak snapped.

Williams rushed for a career-high 186 yards and two touchdowns. Stewart added 115 yards and two more scores as the Panthers shattered their previous rushing record of 264 set Nov. 16 against lowly Detroit.

"Unfortunately we just didn't have an answer for their running machine tonight," Bucs coach Jon Gruden said.

Steve Smith added nine catches for 117 yards and a touchdown, and the Panthers overcame Jake Delhomme's two interceptions behind their dominating ground game, an area Carolina targeted in the offseason by drafting Stewart and overhauling its offensive line.

"It's kind of what we're built around," coach John Fox said. "I think we got bigger and more physical up front and both of those backs are pretty special."

The Buccaneers wasted a career day from Antonio Bryant, who caught nine passes for 200 yards and two touchdowns, including an outstanding one-handed TD grab with 2:29 left that cut the lead to 31-23.

But Matt Bryant's extra-point attempt was blocked by Peppers. The Panthers then recovered the onside kick, and Williams scored his 13th touchdown — breaking Stephen Davis' single-season team record — to put it away.

"The O-line and the fullback did an outstanding job blocking for us today," Williams said. "They did an outstanding job getting us to the second level."

It was a frustrating night for the Bucs, who roughed up Carolina 27-3 in October — holding Carolina to 40 yards rushing. A win would have given them control of the division.

Instead, their offense couldn't keep up as the Panthers improved to 7-0 at home. Jeff Garcia lost to Carolina for the first time in six starts despite throwing for 321 yards and two touchdowns. Garcia was sacked five times.

"Our defense has bailed us out so often this season," Garcia said. "This was one of those nights where offensively we needed to be better."

In his first game back in Carolina since suffering a career-threatening knee injury 14 months ago, Carnell "Cadillac" Williams had a 4-yard touchdown run late in the third quarter to tie it at 17.

Carolina then wore down Tampa Bay with its 1-2 run punch to move within a game of the NFC-leading New York Giants. Stewart rumbled over tackles for an 18-yard gain before his 4-yard TD run with 13:21 left put the Panthers ahead to stay.

After Peppers sacked Garcia to end the Buccaneers' next drive, Williams and Stewart dazzled.

Williams gained 41 yards, Stewart picked up 3 and 30, and then Williams raced 16 yards to close the decisive four-play TD drive.

"We're not making any excuses about it," Tampa Bay linebacker Derrick Brooks said. "We got hit in the mouth."

Williams became only the third player in Carolina's 14-year history to surpass 1,000 yards rushing in a season when he rumbled 40 yards up the middle in the second quarter. That set up Stewart's 2-yard TD run with 1:56 left before halftime that gave Carolina a 10-3 lead.

Stewart's two second-half touchdowns gave him eight on the season and passed the late Fred Lane for the team rookie record.

Full of record-busting stats, the Panthers were a confident bunch after shining on the Monday night stage.

"When we get our running backs, especially the caliber of our backs, on the secondary," Smith said, "it's not good for the secondary."

Notes: Panthers OL Jeremy Bridges was inactive a day after being arrested for the second time in 16 months on assault charges. ... Bucs DT Jovan Haye (knee) did not play and was replaced by Ryan Sims in the starting lineup. ... Ronde Barber and Jermaine Phillips had interceptions for the Bucs.