WASHINGTON -- Adam Wainwright was as close to unhittable as he's ever been.
"I had pretty much everything working. My sinker was sinking, my four-seamer was four-seaming, my curveball was curving," Wainwright said. "My cutter was back. That was a big pitch for me tonight, something that when I'm throwing that quality, good, hard cutter (and) not a sloppy slurvy slider thing, it keeps those lefties honest."
The right-hander threw a two-hitter Thursday night for his seventh career shutout, chipped in at the plate with a double and single, and St. Louis benefited from four errors by Washington in an 8-0 victory.
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.
"He was really mixing it up as well as we've seen him mix it up in a long time," Cardinals manager Mike Matheny said.
It was Wainwright's 17th complete game and his fourth two-hitter. He's never allowed fewer hits over nine innings.
"Days like today you could tell he knew, or probably knew, that guys were sitting on certain pitches at times and he would either take a little more off or just stretch the zone a little bit," Matheny said. "When you're able to be that fine it's just one of those rare days and he has them more than most people."
Wainwright threw 110 pitches and finished the game by striking out Desmond.
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.
Desmond failed to field a ball hit by the game's first batter. Then, his throwing error in the fourth 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 made it 4-0. Nationals right fielder Jayson Werth dropped a flyball in the eighth.
"It's not lack of effort. It's not lack of preparation," Nationals manager Matt Williams said. "It's not lack of anything."
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 and 0-6 against the Cardinals. It's 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," 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 first ball of the game, you boot it, that doesn't set the tone. If I ever want to be the captain of this team -- and I do -- I'm going to have to be better than that," Desmond said. "I've been in some dark places defensively, and this is right there with them."
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, 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.