Beltran picked on Ian Kennedy (3-2) with a two-run homer in the first inning and a grand slam in the second to give St. Louis its third consecutive victory and send the Diamondbacks to their sixth loss in seven games.
Matt Holiday and Skip Schumaker had two hits apiece for the Cardinals. John Jay had a triple and scored two runs.
After Beltran staked the Cards to a 6-0 lead after two innings, Jake Westbrook (4-2) sailed along through seven innings, allowing four hits and two walks and striking out eight before turning the game over to Kyle McClellan and Mitchell Boggs.
Puzzle-maker slips 'Murdoch Is Evil' into Rupert Murdoch's Sunday Telegraph
Wisconsin business offering 'therapeutic cuddling' forced to close