Cristian Javier struck out 11 batters over six solid innings as the Houston Astros fended off a ninth-inning rally to take a 5-4 win over the Los Angeles Angels.