Kennedy (2-1) scattered eight hits over 6 2/3 innings and Chad Qualls notched his sixth save for the Diamondbacks, who have won two in a row in Houston after being swept by the Cubs in Chicago.
Roy Oswalt (2-4) lost his second consecutive decision despite a fairly solid outing. Oswalt gave up five hits over seven innings and struck out eight. His biggest gaffe was a two-out blast by Upton that cleared the center field wall at Minute Maid Park in the third inning.
Michael Bourne chipped in with a double for the Astros, who have lost eight straight.
Kennedy worked his way out of a couple of jams in which he put two runners on in the second and fourth innings. Houston put a runner in scoring position in the seventh, but Juan Gutierrez took the mound and retired Carlos Lee on a ground ball to end the threat.