Moehler (6-5) tossed 6 1/3 innings, scattering seven hits. But the right-hander's first victory at home in 10 starts dating back to last season didn't come easy.
After walking back-to-back hitters to load the bases with one out in sixth, Moehler was able to work out of the jam. He got Alberto Gonzalez to pop out to second base and then induced Anderson Hernandez into a ground out to first baseman Lance Berkman, who flipped to Moehler covering first to end the inning and preserve the Astros 1-0 lead.
"Brian stepped up really huge for us," manager Cecil Cooper said. "He made some great pitches all day. Command was good, and I thought the sixth inning was about as good as it gets. He had the bases loaded and he had walked a couple of guys and kind of got around some guys and made some good pitches to get out of it."
Reliever Alberto Arias found himself in the same situation in the next inning, but followed Moehler's example.
After Moehler exited with a runner on second and one out in the seventh, Arias allowed a single and a walk to load the bases yet again. But he also escaped, induced a popout and groundout to escape the frame and keep Houston in front.
"It's a funny, humbling game," Nationals manager Manny Acta said. "This is the same club that scored all those runs yesterday. We just couldn't execute offensively. We had runners on second with nobody, out and we couldn't get him over. Twice with the bases loaded with one out -- and we couldn't get it done."
Kazuo Matsui provided the Astros with some insurance, hitting a three-run homer in the seventh. It was Matsui's third long ball of the season, falling just beyond the right-field wall to give Houston a 4-0 lead.
Matsui's home run and a walk to Arias in the next at-bat finally chased Zimmermann from the game. The Astros would add a run in the eighth on a balk by Washington reliever Tyler Clippard.
"I'm not a home run hitter," Matsui said. "I just try to get on base. I've only hit three home runs, but the home run [today] was big."
The game would have been scoreless early had it not been for a first-inning error by the Nationals.
Houston took advantage of a throwing error by Gonzalez in the first to open the scoring. On a ground ball by Michael Bourn, the shortstop's throw skipped in the dirt and past first baseman Nick Johnson, allowing Bourn to reach second. He would score the game's first run on a single up the middle by Miguel Tejada.
It was enough for a determined Moehler.
"I knew our bullpen was a little short today, so I was trying to get as deep as I could into the ballgame," Moehler said.
Moehler, who has now won four of his past five decisions, was matched by Zimmermann for most of the game.
Both yielded just two hits each through the first four frames, but the Nationals were unable to scratch a run across and would end up leaving more than a handful of runners on base.
"Not many times you're going to see a club, that's a good hitting team there, leave 12 guys on base. And that means we made some pitches," Cooper said.
By getting the last out of the eighth inning and the final three outs in the ninth to complete the shutout, Valverde picked up his eighth save of the season and No. 150 of his career, making him just the fourth Dominican-born player all-time to achieve that milestone.
"It means a lot to me to be one of the Dominican closers to reach that mark," Valverde said. "I think for me and my Dominican fans, it's an honor to keep progressing."