Kevin Durant missed a jump shot at the buzzer that could have won the game for Oklahoma City.
Kyle Lowry scored 14 points and Luis Scola added 13 for the Rockets, who have won two of three on the heels of a four-game losing streak.
Russell Westbrook led the Thunder with 23 points and a game-high 10 assists, while Durant scored 18. Oklahoma City lost for just the second time in eight games.
The Thunder trailed by six with a minute remaining in the game when Durant, double-teamed down low, kicked the ball out to Jeff Green for a three-pointer that pulled them within 99-96.
Battier missed a jumper at the other end and Oklahoma City got within a point on Westbrook’s bucket inside 30 seconds.
After Lowry missed a 17-footer, Thabo Sefolosha grabbed the rebound for Oklahoma City with 3.1 seconds remaining.
Durant received the inbounds pass near the top of the key after a timeout and, with Battier in his face, missed from about 20 feet at the buzzer, ending the game and the Thunder’s five-game winning streak on the road.
“If he had a chance to do that over again, he would have made it,” said Thunder head coach Scott Brooks.
Durant, who was 7-of-18 from the field, credited Battier’s defense, but was frustrated that he didn’t hit the shot anyway.
“That was one of the plays you wish you could have back,” he said.
The Rockets controlled the action early in front of a home Toyota Center crowd, going ahead by as many as 10 points on the way to a 33-25 lead at the end of the first quarter.
Their lead reached as high as 12 in the second quarter and was 50-42 at halftime behind 13 points from Martin. Houston carried a 77-71 advantage into the fourth.
The Thunder franchise has lost 11 consecutive games in Houston…The Rockets have won 21 of the last 25 meetings…Oklahoma City shot 49 percent in the game and Houston 45 percent.