Myers (11-7) allowed three hits and walked one, improving to 10-3 with a 2.21 ERA in 17 career games against the Cubs. The right-hander is 3-0 with a 1.76 ERA in his last six starts overall.
Myers has lasted at least six innings in all 29 of his starts — the longest streak in team history and longest in the majors since Curt Schilling's run of 35 straight for Arizona in 2002.
Surging Houston, which won for the 13th time in 17 games, took all five series against the Cubs this season.
Randy Wells (6-13) allowed four runs and nine hits in six innings for Chicago.
Myers retired the first 14 batters he faced. He got some help from his defense when second baseman Jeff Keppinger made a backhanded stop and a leaping throw to get Starlin Castro in the fourth inning.
Myers also worked out of a jam in the seventh, retiring two straight after the Cubs put runners on the corners with one out. He is 3-0 with a 1.21 ERA in four starts against Chicago this year.
Fernando Abad, Matt Lindstrom, Tim Byrdak and Wilton Lopez combined to finish the five-hitter, Houston's ninth shutout of the season. Abad and Byrdak each got one out, and Lindstrom and Lopez retired two batters apiece.
The Cubs were shut out for the 10th time this season.
Humberto Quintero hit an RBI single in the second and Pence connected in the third for his 23rd homer. Chris Johnson added an RBI single in the fifth and Keppinger drove in a run with a groundout in the sixth.
After being benched the previous two games by Quade, Castro committed an error on Carlos Lee's grounder to shortstop in the first inning. Quade sat Castro for his poor defensive play and not knowing how many outs there were during the seventh inning of Chicago's 18-5 loss to the Mets on Sunday.
NOTES: The Cubs are 26-41 against divisional opponents.