Kevin Martin added 16 points for the Rockets, who had lost three of four coming in. Chase Budinger tallied 10 points off the bench.
Will Bynum finished with 21 points and six assists in a reserve role for the Pistons, who ended a five-game homestand with a 1-4 mark. Rodney Stuckey and Ben Gordon donated 19 and 15 points, respectively.
Trailing by one, 94-93, with under five minutes to play, Patterson scored the first seven points of a 9-0 run to put the Rockets in front. Aaron Brooks capped the surge with two free throws to make it a 102-94 game with two minutes left.
Detroit never got closer than six the rest of the way.
The Pistons raced out to a 15-5 margin and led 28-20 after 12 minutes of action.
Houston charged back in the second quarter to make it a 51-51 game at the break.
The Rockets carried that momentum over to the second half, starting the third period on a 14-3 run. Shane Battier and Kyle Lowry each made three-pointers during the burst, which Martin capped with a jumper to give Houston a 65-54 edge with seven minutes to go.
But the Pistons ripped off seven straight points late in the stanza to get within two, 75-73, on Bynum's trey. Detroit trailed by three, 78-75, heading to the fourth.
The Pistons used a 7-0 flurry early in the fourth to take an 82-80 edge on Charlie Villanueva's three-pointer with 9:12 to play.
Houston won both meetings with the Pistons this season...Detroit was without guard Richard Hamilton (groin)...Rockets guard Courtney Lee (pneumonia) missed the game...Houston went 26-of-28 from the foul line, while the Pistons went 14-of-15 from the charity stripe...Greg Monroe had 12 points and 12 rebounds in defeat.