The Cardinals' win evened the best-of-five NL Division Series at 2-2 and sets up Game 5 at 5 p.m. EDT Wednesday in St. Louis.
Wacha (1-0), who had a no-hitter for 8 2/3 innings in his last regular-season start, didn't allow a base runner Monday until he walked Russell Martin on four pitches leading off the sixth inning.
He lost his no-hit bid when Pedro Alvarez connected for his third home run of the series in the eighth and Wacha was pulled from the game after he walked the next batter. He had nine strikeouts against the two walks and one hit.
Carlos Martinez got the last two outs of the eighth -- one on a caught stealing -- and Trevor Rosenthal, despite issuing a two-out walk, got the save.
St. Louis had marginally better results against Pittsburgh pitching, managing only three hits. The Cardinals did have four walks, however, including one by Charlie Morton to Carlos Beltran to lead off the sixth. Matt Holliday followed with a shot over the center-field wall for a two-run home run and the game's first runs.
Morton (0-1) was lifted after 5 2/3 innings, having given up three hits and four walks. The Pittsburgh bullpen didn't allow a hit in 3 1/3 innings, striking out five.