James Harden scored 25 points, and Houston used a big run before halftime to beat San Antonio 96-87 on Friday night.
Harden struggled in the first half, going 2 for 9 from the field for five points. But he scored 20 in the third on 7-for-10 shooting, and then rested during the final period.
The Rockets held the Spurs to 41 percent shooting. They also forced 16 San Antonio turnovers, 13 in the first half.
"We got more physical," Houston coach Kevin McHale said. "We got a little tighter. Everyone got into their guys. In the second, we had active hands and tried not to give them anything easy. Our defense has been solid as long as we keep our eyes on people and be aggressive."
Isaiah Canaan had 18 points, including the final seven points after San Antonio had cut the lead to two. Terrence Jones had 11 points and 13 rebounds, and Trevor Ariza added 11 points and nine boards for the Rockets, who shot 42 percent from the floor, including 15 of 35 from behind the arc.
"The Spurs did a good job of not giving up with the big lead we had," Canaan said. "We just wanted to seal the deal, so I just made a couple shots to kind of put the icing on the cake."
Marco Belinelli led the Spurs with 19 points, and Danny Green scored 14. Tim Duncan had 11 points and 10 rebounds, and Tony Parker finished with eight points and 10 assists.
"We look very poor," Spurs coach Gregg Popovich said. "We looked like we're not very interested. Sure we look for our guys to kick it up a notch. We obviously don't want them to kick it down a notch."
The Rockets used a 22-5 run over the final 9 1/2 minutes of the second to open a 49-32 halftime lead. Ariza had seven points in the surge.
San Antonio had one field goal during Houston's big run, a Parker jumper with 6:52 remaining. The Spurs started the quarter 3 for 4 from the field but finished 1 of 11 and missed their final seven shots.
"It's the last preseason game, and I just can't wait until the season starts," Parker said. "This was preseason, and it doesn't mean anything."
The Spurs cut the lead down to two with two minutes left in the fourth on an Austin Daye 3-pointer, but they couldn't complete the comeback.
Houston played without center Dwight Howard, who suffered a laceration in his right forearm that required stitches. He is listed as day to day.
Spurs: San Antonio signed forward Robert Vaden, who most recently played overseas for Belfius Mons-Hainault in Belgium, where he averaged nine points and 1.6 rebounds in 10 games this season. . San Antonio also signed forward Equan Edwin. Edwin, who played four seasons at Seton Hall, was on Oklahoma City's Orlando summer league team.
Popovich used all five of his second-half timeouts in the third quarter. The Spurs were issued a technical in the fourth quarter for calling another timeout.
The Spurs and Rockets open the regular season on Tuesday night. San Antonio hosts Dallas, and Houston is at the Los Angeles Lakers.