Shane Battier added 15 points for the Rockets, which won for the second time in five games since the end of their 22-game winning streak last Tuesday. Houston entered Monday's action in fifth place in the Western Conference, but only one game behind New Orleans and the Los Angeles Lakers for the No. 1 spot.
Kevin Martin scored 18, and Ron Artest and Francisco Garcia had 17 apiece to lead the Kings, who've lost eight of their last nine road games. Sacramento allowed 100 points for the 17th time in 18 games as Houston shot 50 percent from the field (35-of-70).
The Rockets led by eight midway through the fourth quarter, but baskets by Quincy Douby and John Salmons cut the lead in half. Artest scored inside with 4:13 left to pull Sacramento within two at 91-89.
Rookie Carl Landry answered with a basket inside and Alston then hit two free throws and flipped in a one-handed shot from the baseline as the Rockets took control for good.
McGrady twisted his left ankle less than five minutes into the game and scored only two points in the first quarter. Alston picked up the slack, scoring 12 in the quarter, and Houston led 26-24.
Chuck Hayes threw in a hook and McGrady sank a baseline jumper at the start of a 9-0 Rockets spurt that broke a 37-37 tie.
Artest and Garcia swished 3-pointers in the last 1:10 of the half to trim Houston's lead to 53-49 by the break. Both teams shot over 50 percent from the field in the first half and the Kings also went 6-for-7 from 3-point range.
The Kings missed seven of their first 10 shots out of the break and Houston stretched its lead to 65-55. Garcia scored seven points in the last 2:16 of the third quarter as Sacramento cut the deficit to 77-72 heading to the fourth.
McGrady was resting on the bench as the final quarter began. He returned with 9:01 left and the Rockets leading 83-79. He hit two mid-range jumpers and sank a pair of free throws to push Houston's lead to 91-83.
The Rockets improved to 15-2 when scoring 100 points or more at home this season. Sacramento has dropped seven of its last 11 games overall, and eight of the last 11 meetings with Houston.
Notes: Salmons scored 15 for the Kings. ... Point guard Beno Udrih, who missed the last three games with a back strain, played 10 minutes in the first half, then sat out the rest of the night. ... McGrady finished 5-for-16 from the field. ... The Rockets went 33-for-42 from the free-throw line, setting season highs in both makes and attempts. ... Mikki Moore had a career-high six assists for the Kings.