Anthony Rizzo went 4-for-5 with an RBI single and Josh Vitters also knocked in a run for the Cubs, who took the opener of a three-game series at Wrigley Field.
Samardzija (8-10) struck out 11 over seven innings, yielding one run on four hits. He walked three en route to breaking a personal three-game winless streak.
Houston's Armando Galarraga (0-3) was roughed up for five runs on seven hits over five full frames.
Brandon Barnes cracked his first major-league homer to provide the Astros' only run.