Wainwright (3-1) allowed Ian Desmond's infield single in the second inning and Adam LaRoche's single to right in the ninth. He struck out eight and walked three. During one dominant stretch, the runner-up for the 2013 NL Cy Young award retired 18 consecutive batters.
This was the right-hander's 17th complete game and his fourth two-hitter.
Desmond, Washington's shortstop, made a pair of errors, raising his season total to seven. The Nationals have 20 through 16 games, an average of 1.25.
Wainwright threw 110 pitches and finished the game by striking out Desmond.
Taylor Jordan (0-1) gave up seven runs, five earned, in 5 1-3 innings.
St. Louis has won eight in a row against Washington, dating to Game 5 of the 2012 NL division series.
So far this season, the Nationals have beaten weaker opponents, going a combined 8-1 against the Mets and Marlins, and really struggled against better teams, going 1-6 against the Braves and Cardinals.
Remnants of last season, when the Nationals went 6-13 against the Braves, 0-6 against the Cardinals. It is as if Washington sees those clubs and forgets the basics of baseball.
"If you don't play well against these guys, you're probably going to get beat," Nationals manager Matt Williams said before Thursday's game. "We understand that we have to play the game right and play it well to have a chance to win."
It was as if his players set out to prove him right.
The game's first batter, Matt Carpenter, sent a seemingly routine grounder to Desmond, who failed to field the ball cleanly. Then Kolten Wong's swinging bunt was grabbed by Jordan, but the pitcher could not manage to get the ball out of his glove. That, at least, was ruled a hit.
Up came Holliday, who bounced a double past diving third baseman Anthony Rendon to drive in a run. An RBI groundout scored another, and Yadier Molina's single through a drawn-in infield made it 3-0.
There was more sloppiness in the fourth, when Desmond's throwing error was compounded by an error on second baseman Danny Espinosa, who dropped the ball making the transfer on a potential double play, resulting in an RBI for Wainwright that gave St. Louis a 4-0 lead.
NOTES: In Friday's second game of the four-game series, Cardinals RHP Michael Wacha (2-0, 1.89 ERA) will face Nationals LHP Gio Gonzalez (2-1, 3.50). ... The Cardinals put RHP Joe Kelly on the 15-day DL with a strained left hamstring, a day after he got hurt while trying to beat out a bunt attempt in a 5-1 loss to Milwaukee. St. Louis also optioned RHP Keith Butler to Triple-A Memphis and recalled rookie RHPs Eric Fornataro and Jorge Rondon from Memphis. ... Nationals CF Denard Span (7-day DL, concussion) began a minor league injury rehab stint at Class A Hagerstown on Thursday, going 1 for 2 and playing five innings on defense. ... Nationals RHP Doug Fister (15-day DL, back muscle) threw two innings at extended spring training in Florida.
Link to box score: St. Louis (10-6) 8 at Washington 0
Join the pre-game, in-game and post-game discussion about each contest at The Cardinal Nation message board.