The last time Wacha started at PNC Park was in the Game 4 of last year's National League Division Series and he took a no-hitter into the eighth inning in beating the Pittsburgh Pirates.
Yet the hot-hitting Walker had three hits, including a go-ahead three-run home run in the seventh inning, and drove in four runs to help the Pirates beat the Cardinals 6-4.
"Wacha is so good, as we found out last year," said Walker, who has reached base in 22 of his last 40 plate appearances. "He throws hard and you've got to shorten up your swing and put the ball in play. That's the best way to approach him because you're usually not going to do too much against him."
While Walker's first two hits were against Wacha, his seventh homer came off Carlos Martinez (0-2) and rallied the Pirates from a 4-3 deficit for their third straight victory. Jordy Mercer and pinch-hitter Gaby Sanchez led off the inning with singles and were bunted up a base by Jose Tabata before Walker hit a drive into the right-field stands.
"Martinez is as tough as Wacha, but he hung a slider and I was able to put a good swing on it," Walker said. "I was surprised. The guy has such great stuff that you're not thinking that you're going to hit a home run in that situation. It was huge."
Cardinals manager Mike Matheny said it didn't appear that Martinez got the home run pitch "where he wanted it."
Mercer had three of the Pirates' 12 hits, while Ike Davis, who hit a two-run double in the first inning to open the scoring, and Tabata had two hits apiece. Pittsburgh beat St. Louis for the 10th time in 13 games at home.
Mercer's performance was a welcome development for the Pirates and their shortstop, who is hitting just .187.
"I've been putting in a lot of time in the batting cage, trying to figure things out and it's nice to have some results because I feel confident now when I step in the batter's box," Mercer said. "Confidence is such a big part of hitting."
Peralta and Craig had two hits apiece in the Cardinals' second loss in five games.
Justin Wilson (1-0) struck out the only batter he faced, Matt Adams, to end the top of the seventh. Mark Melancon, filling as the closer for injured Jason Grilli, pitched a scoreless ninth for his third save.
Both starting pitchers worked five innings and had uneven performances. Pittsburgh's Francisco Liriano allowed three runs, five hits and four walks while striking out five, while Wacha gave up three runs on seven hits with seven strikeouts and one walk.
Liriano has gone a career-long 11 regular-season starts without a win since beating the Texas Rangers last Sept. 10. Wacha is winless in his last five starts.
The game was delayed 25 minutes in the top of the fourth inning because of rain. . Pirates OF Travis Snider's appeal of his two-game suspension for his actions in an April 20 brawl were upheld and he began serving his penalty Friday night. . The Cardinals recalled OF Joey Butler from Triple-A Memphis and optioned OF Randal Grichuk to the same club. . Pittsburgh recalled INF Brent Morel from Triple-A Indianapolis. They had optioned RHP Phil Irwin to Indianapolis on Thursday. . Grilli threw from the top of the mound Friday for the first time since April 21 when the closer went on the disabled list with a strained left oblique. . Cardinals RHP Lance Lynn (4-1, 3.51) will start Saturday night against RHP Edinson Volquez (1-3, 4.19).