The Cardinals went up 1-0 on a first inning double from Tyler O'Neill. Yairo Munoz increased St. Louis' lead to 2-0 with an RBI single in the bottom of the third inning. Goldschmidt stepped in to face Greinke in the next at-bat. Greinke tossed a curveball into the dirt for the first offering of the exchange.
Goldschmidt then sent his 1-0 changeup into the left field seats for his 17th home run of the season. The 416-foot blast had an exit velocity of 105 mph and left the field in 5.4 seconds, according to Statcast.
"It was a good swing," Goldschmidt told reporters, according to MLB.com. "I was able to hit it and get it out of there. The other ones haven't felt bad either. They've been close, but I haven't been able to get the results. Try to keep having good at-bats, hit the ball hard, try to help us win."
Matt Carpenter added the Cardinals' final run with a sacrifice fly in the next inning, plating Harrison Bader. Domingo Leyba doubled in the Diamondbacks' first run in the top of the ninth inning. Tim Locastro had an RBI single for the Diamondbacks' second and final run of the bout.
Goldschmidt is now hitting .251 with 17 homers and 39 RBIs on the season. He went 2-for-4 with two RBIs and two runs scored in the victory.
Cardinals starter Adam Wainwright picked up his sixth win of the season, allowing four hits and tossing seven strikeouts in seven shutout innings.
The Cardinals host the Pittsburgh Pirates in a National League Central matchup at 8:15 p.m. EDT Monday at Busch Stadium. Arizona travels for a game against the Texas Rangers at 8:05 p.m. Tuesday at Globe Life Park in Arlington, Texas.