The Cardinals seemed to be in control early as they took a 3-0 lead with a home run by Lance Berkman in the second inning and a couple of hits by Albert Pujols and Matt Holliday in the third. The Diamondbacks, however, responded in the fourth inning with hits by Chris Young and Miguel Montero to tie the game 3-3.
The score remained tied until the seventh inning, when Kelly Johnson opened up a 7-3 Diamondbacks lead with a grand slam to bring Juan Miranda, Gerardo Para, and Ryan Roberts home. It was Johnson's second grand slam of the season, and he now has 16 home runs on the year.
The Cardinals scored three runs in the bottom of the eighth to pull within one at 7-6, but they never got closer. Stephen Drew made an error in the bottom of the ninth on a potential game-ending double, and the Cardinals looked positioned to steal the game with runners on first and second with only one out. David Hernandez rose to the occasion though and sealed the deal with some impressive pitching. Hernandez is five for five on saves during this Diamondbacks' road trip through Oakland, Milwaukee, and St. Louis.
The Diamondbacks now have two games, both against the Cardinals, left until the All-Star Break. Arizona is 49-41 and sit one-and-a-half games back of the San Francisco Giants (50-39 before tonight's game against the Mets) in the NL West. They will be looking to gain some ground in their final two games before the break.