PHOENIX (AP) -- Amare Stoudemire is always striving for perfection. From the free-throw line on Saturday night, he achieved it.
"To be honest with you," Suns coach Mike D'Antoni said, "nothing that he does really surprises me anymore. He wants to win a championship. He wants to be the best player he can be."
Stoudemire, who also had 13 rebounds and four blocked shots, broke the club record of 17 consecutive free throws in a game, set by Paul Silas against Atlanta on Jan. 10, 1971. Shaquille O'Neal added 23 points -- his most since coming to Phoenix -- and grabbed 13 rebounds.
"He's playing MVP-like ball now," O'Neal said of Stoudemire. "I told him when I got here that he should take it personal that they talk about Dwight Howard and they talk about Kevin Garnett before they talk about him."
Stoudemire tied Detroit's Richard Hamilton for the second-most free throws without a miss in an NBA game. Dominique Wilkins hit 23 in a row for Atlanta against Chicago on Dec. 8, 1992.
Since the trade for O'Neal, Stoudemire is averaging just under 29 points and 10 rebounds.
"I wasn't ever a horrible free-throw shooter," Stoudemire said. "It was just a few techniques I had to work on, and I was able to get that done the past few years, just repetition. I think from shooting the jumper, it allows me to find my rhythm from the free-throw line."
Overall, the Suns were 38-of-40 at the line. O'Neal was 7-for-9.
Tracy McGrady had 30 points, nine assists and seven rebounds for the Rockets, who trailed by 23 in the second quarter and 17 at the half. The Rockets cut it to eight on several occasions but could get no closer.
"We cut the lead to eight points. That kind of gave us a little confidence that it was possible if we could just get a couple of more stops," McGrady said. "But we lost that game in the first half."
The Suns shot 57 percent, 76 percent in the first half, to move ahead of the Rockets with the third-best record in the West (47-22), a half-game behind New Orleans and a game behind the conference-leading Los Angeles Lakers.
The Rockets played their fourth game in five nights. They lost three of them following their 22-game winning streak. Two of those losses came when they played for the second night in a row.
"It's been four tough games," Houston coach Rick Adelman said. "That's what we talked about at halftime, that's not who we are in the first half."
The Rockets rallied behind McGrady to cut it to 93-85 on his 15-footer with 1:37 left in the third period. O'Neal's bank shot made it 95-85 entering the fourth.
The Suns opened the fourth with a 10-2 run to go up 105-87 on Gordan Giricek's two free throws with 9:07 left. Houston came back again, with Bobby Jackson's 3-pointer from the corner cutting the lead to 107-99 5:44 from the finish. But Stoudemire's two free throws and Steve Nash's 3-pointer lifted Phoenix out of trouble.
The Suns missed eight shots in the first half, going 25-of-33 to lead 74-57 at the break. Stoudemire had 26 at the break on 7-of-11 field goals and 12-of-12 free throws. O'Neal, Barbosa and Nash also were in double figures after the first two quarters.
A 10-0 run put Phoenix up 12-3 and the Suns were in control from there. The Suns made 22 of their first 26 shots and led 68-45 on Boris Diaw's rebound basket with 2:38 left in the half.
The Suns shot 74 percent (14-for-19) in the first quarter to Houston's 33 percent (8-of-24). ... Phoenix leaves on a four-game road trip to the East while the NCAA West Regional is staged on their home court. ... Dikembe Mutombo had six points, three rebounds and four fouls against his old foe O'Neal. ... Grant Hill had 10 assists, his highest since Oct. 31, 2000, for the Pistons against Washington.