Maholm (5-6), snapped an eight-start winless streak with the 98-pitch effort over 8 1/3 innings. He took a one-hitter into the eighth when he allowed his second hit of the game.
Houston's Brian Bixler singled to open the ninth and, after an out, Carlos Lee doubled down the left-field line. Maholm was then pulled for Carlos Marmol, who got the final two outs for his sixth save.
That allowed Maholm to claim his first win since May 9.
Houston starter Bud Norris (5-5), just off the disabled list, was charged with seven hits, including all three home runs, and four runs in six innings. He walked one and struck out one.
Luis Valbuena hit his third home run of the season in the second inning for a 1-0 lead and Scott Clevenger connected for a two-run homer in the fourth. It was his first career home run.
Alfonso Soriano completed the scoring in the sixth with his 17th home run.