Houston, averaging 106 points, outrebounded the Bobcats 51-37. Charlotte's point total was a season low for a Rockets' opponent.
"It's a solid win for our guys," coach Rick Adelman said. "We came out and defended them pretty well. We did what we had to do, which was control the game from the very start."
Houston also never trailed in Monday's 95-93 win over Phoenix.
"That's two games in a row that we kept somebody under 100," Hayes said. "Our defense is there, and our offense is clicking, at times. If we can put them both together, that would just be too much of a perfect game."
D.J. Augustin scored 22 and Boris Diaw added 13 for the Bobcats, who've lost nine of the last 11 meetings with Houston. Charlotte remained a half-game behind Indiana in the race for the No. 8 seed in the East.
The Bobcats went cold after shooting 53 percent in the first quarter. They finished 29 for 78 (37 percent) from the field, as leading scorer Stephen Jackson went 2 for 14.
Jackson went 0 for 5 from 3-point range and took full blame for his bad night.
"My body felt fine," he said. "It was just one of those nights. I had wide-open looks, but the shots didn't fall. It wasn't anything they did with their defense."
Augustin scored nine points in the second quarter to keep Charlotte close, but the Bobcats needed more production from Jackson to have any chance to win.
"Any time your best player has an off night, it's tough," coach Paul Silas said. "He got the shots he normally makes, but he didn't make them."
Charlotte missed its first 10 shots after halftime, before Jackson scored inside with 7:23 left in the quarter, his first field goal in 11 attempts. Martin swished a 3-pointer a minute later to push the lead to 57-43.
Kyle Lowry finished a fast break with a layup, and Budinger threw an alley-oop pass to Patterson for a dunk as the Rockets built an 18-point lead. The Bobcats answered with a 10-0 run, but Houston still led 68-57 after three quarters.
The teams combined to go 14 for 47 from the field and gave away eight turnovers in the sloppy third.
"We had a lot of open shots, and some of them weren't falling," said Houston's Courtney Lee, who scored nine. "You can credit them, or you could say it wasn't our night. But we stepped it up on the defensive end, that's what's most important."
Shaun Livingston cut inside for two baskets to draw Charlotte within six with seven minutes left. Hayes scored inside, then threw a long pass to Lee for another dunk to extend the lead back to 10, at 80-70.
Later, the Rockets grabbed consecutive offensive rebounds on long misses, and ran nearly a minute off the clock before Hayes scored inside for an 87-74 lead.
"We get the loose-ball rebounds, kind of killed the time and got a good shot," Hayes said. "It was a good sequence for us, and we put the game out of hand."
Lee finished off Charlotte with a jumper from the wing a minute later.
The Rockets never trailed for the sixth time this season. ... Charlotte has lost its last six road games against Western Conference opponents. ... Bobcats C Joel Przybilla missed his fourth straight game with soreness in his right knee. Silas said the 7-foot-1 Przybilla will also skip Friday's game at Oklahoma City and Saturday's game in San Antonio. ... Houston F Luis Scola sat out for the fourth consecutive game with a sore left knee. ... Hayes' rebound total was one shy of his career high. ... Jackson sustained a cut over his right eye in the second quarter and briefly left the game. He got two stitches at halftime.