"Doumit has been up two months and I'm finally clicking with him," Williams said. "He called a great game. There were very few times I shook him off. He's really coming around."
It was the first time Williams (10-8) lasted longer than seven innings in 55 major-league starts. He gave up five hits and improved to 1-3 in six career starts against Houston. The left-hander struck out seven, walked one and did not allow a runner past first base in Pittsburgh's ninth shutout of the season.
"I was throwing everything for strikes," Williams said. "It's easy to pitch when you've got good stuff."
Jason Bay, Jose Castillo and Ryan Doumit also connected for the Pirates, who have blanked Houston four times this season. The Astros, who hold a slim lead in the NL wild-card race, have been shut out 14 times overall -- most in the major leagues.
"I think he faced a team that just allowed ourselves to be easy outs," Houston's Morgan Ensberg said. "It wasn't as much Dave Williams as it was our not getting good at-bats.
"It's extremely frustrating. We just haven't shown up offensively the last two days. To not score a run in two games is unacceptable."
Astros manager Phil Garner is also concerned about his team's offense.
"We didn't strike the ball well today," Garner said. "It isn't like they were diving all over the place catching balls. Williams had an assortment of off-speed pitches. He had movement on his fastball and he pounded the strike zone.
"The good news is that the odds are in our favor that we will score some runs tomorrow."
The Pirates think Williams is improving quickly.
"Back in the spring, we tried to impress upon Dave that he had to pitch, not just throw," manager Lloyd McClendon said. "Today he did that. He created a tempo and maintained it.
"He used his breaking ball well and it just made his fastball and changeup that much better. It was just a nice performance."
Ezequiel Astacio (2-6) went six innings for Houston, allowing four runs and seven hits. He had a career-high seven strikeouts but gave up three homers. In his 13 starts, Astacio has given up 67 hits, including 19 home runs.
"I faced Astacio a lot in the minor leagues," Doumit said. "I've got a feeling for what he throws."
Castillo's 11th homer in the second and Bay's 23rd in the fourth built a 2-0 lead for Pittsburgh.
In the sixth inning, Daryle Ward singled and Doumit followed with his third homer for a 4-0 lead.
Wilson hit his second career slam in the eighth off Mike Burns, his eighth homer this year. Wilson's homer off Brad Lidge in the ninth inning Saturday sent Pittsburgh to a 1-0 win, spoiling a splendid outing by Roger Clemens.
Williams was just as good Sunday. Plus, he wound up with a win.
"He was something else," said Doumit, called up from Triple-A Indianapolis on June 5. "He made my job easy. He threw a fast-paced game and had them eating out of his hand all day. It was a fun game to be a part of."
- After Adam Everett was pulled in a double switch, Houston C Brad Ausmus played shortstop for the first time in his career in the ninth inning.
- Houston's Willy Taveras and Craig Biggio were not in the starting lineup to give them some rest, although Taveras pinch hit in the sixth.
- Bay has reached base safely in 29 consecutive games. His home run was the 53rd of his career, moving him into eighth place among Canadian-born players.
- Though only 25-36 on the road, the Pirates have won five of their last seven away from home.