Wacha (4-1), a rookie right-hander making his ninth major-league start, began the ninth without allowing a hit. Steve Lombardozzi grounded out to start the inning and Denard Span struck out looking, leaving just Ryan Zimmerman as Wacha's final obstacle.
But the Nationals third baseman chopped a grounder over the pitcher's glove to shortstop and Pete Kozma's off-balance throw pulled first baseman Matt Adams off the bag, giving Zimmerman an infield single.
Trevor Rosenthal then entered and recorded the final out for his second save as the National League Central-leading Cardinals reduced their magic number for winning the division to three.
Wacha walked two and struck out nine in the 112-pitch gem.
Shane Robinson and Yadier Molina each drove in a run for the Cards.
Washington's Gio Gonzalez (11-8) absorbed the loss, allowing a pair of runs on six hits.