Shaquille O'Neal huffed and puffed and even knocked his free throws down.

Already short-handed with injuries, the Boston Celtics were suddenly even thinner because of fouls and forced to play their biggest, oldest player a season-high 35 minutes.

And the 38-year-old hauled his giant body through it all, scoring 23 points, pulling down five rebounds and blocking five shots as the Celtics held off the Charlotte Bobcats 99-94 on Friday night.

"Shaq wants to play, but he doesn't want to play 35 minutes," Boston coach Doc Rivers said.

Rivers and Shaq didn't have much choice. Kevin Garnett was out for the ninth straight game and Paul Pierce was on the bench nearly half of Friday because of foul trouble, which also depleted the reserves Rivers called on to step in and stop the streaking Bobcats.

So O'Neal got rest when he could, then was right back on the court. He was 10 for 12 from the field and capped it off by making all three of his foul shots.

"I knew that whatever happened I was going to be ready. I've been in foul trouble and haven't really played a lot of minutes so there was really no excuse for me to be tired," O'Neal said. "I just came out and got a few more touches tonight and just did what I do."

Rajon Rondo added 18 points and 13 assists and Ray Allen scored eight of his 19 in the fourth quarter, leading Boston on a 10-2 run that broke open the game.

The Celtics were also without Jermaine O'Neal, who is out indefinitely with a sore left knee that acted up on him earlier in the week.

But that doesn't mean Rivers expected to push Shaq like he had to Friday.

"With Shaq, it's just too many minutes," Rivers said. "We had no choice. It's not a big deal for one night. I don't worry about it. And we don't play again until Monday, so that's nice. It came at the right moment.

Gerald Wallace led Charlotte with 20 points.

D.J. Augustin added 19 points and Stephen Jackson scored 13 for the Bobcats, who fell to 6-3 under interim coach Paul Silas.

"Mentally we've got to come with it a little bit more," Silas said. "It's a mental game. That's what I told those guys — 90 percent of it is mental and we are just not there yet."

The Celtics needed a big night from their starters because their reserves combined for just nine points and six rebounds against the Bobcats, who were in it right up until a surge midway through the fourth quarter put the Celtics in command for good.

O'Neal opened the fourth with a three-point play, getting a bonus free throw because of a lane violation, but the pesky Bobcats wouldn't go away and got Pierce to commit his fifth foul with 8:42 left in the game and Boston up 76-72. Wallace hit a jumper to cut the margin to two, but the Celtics responded with a 10-2 run.

O'Neal started it with a hook shot, then Allen hit back-to-back 3-pointers to put the Celtics back in command.

"We had a defensive scheme and it was really working for us, but it broke down there in the end. Ray Allen got two wide open looks that he shouldn't have gotten," Silas said.

Rondo added a 3 to make it 86-76 with about 5:25 left. Allen added three free throws after drawing a foul on a 3-pointer and the Celtics just needed to hang on from there.

Pierce opened the third quarter with a 3-pointer as the Celtics made eight of their first 10 shots, breaking a 44-all tie and pulling away by as much as eight.

But the Bobcats never let it get out of hand and used a 9-2 spurt late in the period to get within a point and trailed only 69-66 at the end of the third.

Notes: Five Boston reserves played in the first half and not one scored a point. ... The Celtics led for nearly all of the first quarter until going without a field goal for nearly 3 minutes late in the period, allowing Charlotte to rally and tie it at 24 entering the second. ... The Celtics assigned rookie guard Avery Bradley to the NBA Development League earlier Friday. ... The Bobcats have lost six straight against the Celtics.