The Rockets passed the Boston Celtics for the longest winning streak in the NBA this season. Houston hasn't lost since Jan. 26 at New Orleans.
The latest victory came on the second of a tough back-to-back stretch of road games that started with a 10-point victory at Oklahoma City. No wonder the Rockets looked sluggish at times against the Bucks.
Trailing by about 10 points for most of the fourth quarter, Milwaukee got within 104-99 with 1:06 left on Sterling Brown's layup.
Chris Paul answered with a short floater in the lane with 45 seconds left after driving on Jason Terry to silence Bucks fans who were pleading "Defense! Defense!"
Houston obliged after forcing the Bucks to waste 15 seconds on the ensuing inbounds pass and settle for an off-balance 3 that missed. The Rockets led comfortably from there.
Giannis Antetokounmpo scored 30 points. Khris Middleton finished with 18 points for Milwaukee, while Brown had 15.
Paul had 16 points and 11 assists for Houston.
Harden and his teammates answered every Bucks charge.
Milwaukee used an 11-0 run to get to within 73-69 with 3:25 left on Brown's corner 3. The Bucks did most of their damage during the spurt around the bucket, with Antetokounmpo leading the way.
The NBA's most prolific 3-point shooting team countered with another display of clutch perimeter shooting.
The Rockets would beat the Bucks down the floor to set up open shots on the wing. Gordon knocked down two 3s, and P.J. Tucker added another 3 to help Houston close the third with a 14-7 run for an 87-76 lead.
Houston got off to a sloppy start at the Bradley Center with a seven-turnover first quarter, a night after tying its season high with 22 turnovers in the 10-point win at Oklahoma City.
The end of the first half offered a glimpse of what was still to come. Harden hit a deep 3 just before the halftime buzzer from well beyond the arc with a defender in his face for a 58-46 lead.