Williams (10-8) walked one and fanned seven in his first career complete game. He did not surrender an extra-base hit and it was the first time he pitched more than seven innings in a major league game.
No Houston batter had more than one hit and no one advanced past first base.
Losing pitcher Ezequiel Astacio sank to 2-6. He surrendered four runs and seven hits over six innings with one walk and seven strikeouts.
The Astros now have been shut out 14 times this season, the most of any team in baseball.