Haren (4-1) turned in his first complete game of the season and the 10th of his eight-year career. He had three of them last year.
In a 111-pitch effort, Haren allowed seven hits and struck out nine.
Arizona won three times in the four-game series, handing the Astros their ninth loss in 10 outings.
Haren also scored on a double by Tony Abreu in the fourth, giving the Diamondbacks a 4-0 lead.
Wandy Rodriguez (1-4) suffered the loss, lasing just 3 2/3 innings while giving up five runs and nine hits.