Towles' two-run drive off Rich Hill gave the Astros a 2-0 lead, and that held until Geovany Soto's tying, two-run single in the seventh.
Houston immediately got two runs in the eighth off Jon Lieber (0-1), thanks to shoddy defense.
Second baseman Mark DeRosa booted Lance Berkman's grounder leading off the inning, and Tejada tripled on a ball down the left-field line that caromed past Alfonso Soriano. Ty Wigginton followed with a sacrifice fly.
DeRosa homered in the ninth off Jose Valverde, who earned his first save of the year after leading the major leagues last season with 47 for Arizona.
Wesley Wright (1-0), a 23-year-old rookie left-hander, got his first major league decision in relief of Chris Sampson. Wright, who made his big league debut Monday at San Diego, entered following Soto's two-out single in the seventh and got Felix Pie to ground into a forceout.
Ryan Theriot and Derrek Lee singled against Doug Brocail with two outs in the eighth, but Aramis Ramirez struck out swinging on a 3-2 pitch with runners at the corners.
Sampson retired 13 of the first 14 batters and did not allow a runner past first until the sixth inning. He threw just 71 pitches and allowed six hits, struck out one and did not walk a batter in 6 2-3 innings
- a big improvement after posting a 9.17 ERA in spring training.
Hill allowed just two runs and four hits in six innings, but walked three and hit Towles. That loaded the load the bases with two outs but Hill struck out Sampson.
Hill walked Mark Loretta with two outs and Towles followed with a drive down the left-field line for his second career homer, the first since Sept. 20 at St. Louis.