LaRoche and Mark Reynolds (3-for-4) each hit solo shots in the third to stake Arizona to a 3-0 lead. LaRoche added another bases-empty homer in the fifth to extend the Diamondbacks' lead to 6-1.
Chris Snyder chipped in with a solo blast in a three-run Arizona fourth inning.
Dan Haren (7-4) put in a solid eight innings, allowing two runs on six hits, issuing no walks and fanning nine Cardinals batters.
St. Louis starter Adam Ottavino (0-2) was battered for six runs on nine hits over 3 2/3 innings.
Colby Rasmus homered for the Cardinals, who lost for the fifth time in six games.