Chacon (1-0) failed to record either a win or a loss in his first nine appearances this year, the longest such streak by a starter to open a season in the history of major league baseball.
He went seven innings, giving up three runs on five hits with a walk and striking out five. Jose Valverde struck out two in the ninth and claimed his 14th save.
The Cubs jumped to a 3-0 lead in the first, but Carlos Lee hit a three-run homer as part of Houston's four-run third. Geoff Blum singled in an insurance run in the fifth. Houston has won three out of four and nine out of 13.
The loss went to Sean Gallagher (1-1), who allowed eight hits and five runs in 4 2/3.