Down 2-1 after David Ortiz hit a two-run homer in the sixth, the Cardinals rallied for three runs in the seventh to end Boston's nine-game winning streak in the World Series that started with a sweep of St. Louis in 2004.
Matt Carpenter's tying sacrifice fly set off a chain of Red Sox misplays. Catcher Jarrod Saltalamacchia let the wide throw home skip off his glove, then pitcher Craig Breslow made a wild toss that wound up in the Fenway Park seats. Carlos Beltran followed with an RBI single.
Wacha improved to 4-0 this month, pretty impressive for any pitcher, let alone a 22-year-old rookie.
Trevor Rosenthal struck out the side in the ninth for a save. John Lackey took the loss.
Game 3 is Saturday night at Busch Stadium. Jake Peavy is set to start for Boston against Joe Kelly.
Wacha had already extended his scoreless streak to 18 2-3 innings - a record for a rookie in a single postseason - before Ortiz tagged him in the sixth.
A day after Ortiz homered after nearly hitting a grand slam earlier in an 8-1 romp, Big Papi connected for his fifth home run of this postseason and 17th of his career.
Dustin Pedroia drew a one-out walk and, with the Fenway Park crowd on its feet, Ortiz hit a full-count changeup over the wall in left-center field for a 2-1 edge. Ortiz acknowledged his faithful fans, emerging from the dugout for a curtain call.
It was just Boston's third hit off Wacha, who slammed his glove onto the bench when the inning ended.
Lackey worked around four hits in slowing the Cardinals. He pitched a day after turning 35 - it was his first Series start since 2002 when, as a rookie for the Angels, he beat Barry Bonds and San Francisco in Game 7.
Matt Holliday lined a leadoff triple into the oddly configured triangle in center field in the fourth and scored on Yadier Molina's chopper.
The Cardinals' 1-0 lead marked the first time they'd been ahead of the Red Sox in October for quite a while. Boston never trailed while sweeping St. Louis in the 2004 Series, and was ahead from the beginning Wednesday night.
Beltran started for the Cardinals in right field, returning from an injury that forced him out of the opener. Beltran exited in the third inning and went to a hospital, shortly after bruising his ribs when he rammed into the short bullpen wall while taking away a grand slam from Ortiz.
Both teams made changes to their lineups.
Cardinals manager Mike Matheny benched shortstop Pete Kozma after making two errors in the opener and put Daniel Descalso in his place. Jarrod Saltalamacchia replaced David Ross as Boston's catcher.
After the Cardinals played a most sloppy game in the opener, Wacha restored early order to the NL champions.
The right-hander flashed a 95 mph fastball and a diving changeup while holding Boston hitless until Jacoby Ellsbury's broken-bat bloop single with two outs in the third.
No one in the Boston lineup had ever hit against Wacha and it showed, as the Red Sox struck out four times in the first three innings and took a lot of weak, awkward swings.
Wacha had his own cheering section at chilly Fenway Park, too. His mom, dad and younger sister bundled up in the stands after arriving from Texarkana, Texas.