Lance Berkman added an RBI triple as Houston snapped a three-game losing streak. The Astros beat Washington for just the second time in the last nine meetings.
Austin Kearns hit a two-run homer for Washington, which scored 18 runs in the first two games of the series.
Brad Lidge pitched a perfect ninth for his 12th save in 17 chances.
Williams (7-12) allowed six hits and struck out eight -- one off his season high -- in 6 1-3 innings. The 41-year-old is 3-0 with a 2.05 ERA in his last four starts.
Nationals starter Mike Bacsik (5-6) gave up three runs and seven hits with four strikeouts in six innings. Bacsik allowed 10 runs over nine innings in his last two starts.
The Astros hit two triples in the first three innings and each led to a run.
Wigginton, acquired in a trade with Tampa Bay on July 28, led off the fourth with his second home run since joining the Astros and his 18th of the season.
Dmitri Young doubled with two outs in the sixth inning before Kearns hit his 11th homer of the season.
Williams walked Brian Schneider with one out in the seventh. Chad Qualls relieved and gave up a single to pinch-hitter Eric Church. But Qualls got Lopez to bounce into a double play to end the threat. Qualls put two runners on in the eighth but struck out Wily Mo Pena.
Nook Logan saved a run in the fifth with an acrobatic catch in deep center to rob Berkman of a hit ... Houston RHP Brandon Backe (right elbow surgery) will make his final scheduled rehab start on Thursday. Backe last pitched in the majors on Aug. 18, 2006. ... Astros RHP Chris Sampson (right elbow sprain) is scheduled to pitch one inning in relief Thursday, and then two on Monday for Triple-A Round Rock ... Astros RHP Juan Gutierrez is set to make his first big league start Thursday.