The Cardinals maintained their one-game lead over Pittsburgh at the top of the National League Central, the Pirates having completed a three-game sweep of Texas during the afternoon.
The game was knotted at 1-1 heading into the eighth, but Matt Carpenter's one-out single off reliever Brandon Kintzler (3-2) started the big St. Louis inning.
With Adams at the plate, Jay stole third and came in to score with catcher Jonathan Lucroy threw wildly trying to get him. That left Holliday as the only man on base and he scored in front of the 12th home run of the season for Adams.
Trevor Rosenthal (2-3) picked up the win by working the top of the eighth.