Happ (4-3) quieted the Cubs on one run over six innings, allowing five hits while walking two and striking out six.
Wesley Wright and Wilton Lopez teamed up to toss two scoreless frames and Brett Myers collected his 11th save with a 1-2-3 ninth for the Astros, who clinched their three-game series.
J.D. Martinez provided an RBI single in the sixth inning to break a 1-1 tie and Jose Altuve socked a solo homer for Houston.
Chicago's Travis Wood (0-1), recalled from Class AAA Iowa before the game, allowed two runs on two hits in a 5 2/3-inning stint in his season debut.
Alfonso Soriano clubbed a solo homer in the Cubs' eighth straight loss.