The score was tied 4-4 in the bottom of the ninth when Yadier Molina blooped a one-out single against Brandon Workman (0-1) and pinch-hitter Craig followed with a double against Kenji Uehara, sending Molina to third.
Saltalamacchia then fired to third in a bid to toss out the advancing Craig. His poor throw hit Craig and pulled third baseman Will Middlebrooks off the bag, who fell trying to make the grab.
Craig stumbled over the prone Middlebrooks, got up and slid home as a throw from shortstop Xander Bogaerts reached the plate, but third base umpire Jim Joyce had already awarded Craig the run, ruling Middlebrooks attempted to block Craig with his legs while lying on the ground.
Trevor Rosenthal (1-0) got the win with 1 2/3 scoreless relief innings and Matt Holliday provided three RBI for the Cardinals, who won a second straight World Series game after dropping the opener.
Molina finished 3-for-4 with a run-scoring single.
Daniel Nava drove in a pair of runs for the Red Sox, who will try to regroup in Sunday's Game 4 at St. Louis.
Reindeer recovered after escaping from Santa during lighting ceremony
Selena Gomez drops F-bomb, walks off stage during Jingle Ball performance