Kennedy (1-0) allowed two runs on five hits with one walk.
St. Louis' Adam Wainwright (0-1) went six innings, giving up four runs, three earned, on 11 hits. He struck out six with no walks.
|More on Cardinals-Diamondbacks|
|More MLB coverage|
Arizona's Gerardo Parra matched his career best with four hits, three of them doubles. Rookie A.J. Pollock was 3 for 4, including a two-run double, and Martin Prado doubled twice with an RBI and two runs scored for the Diamondbacks.
Matt Holliday had an RBI double and Daniel Descalso a run-scoring single for St. Louis.
The Diamondbacks' seven doubles were more than they had in any game in the last two seasons.
Kennedy, 15-12 last year after going 21-4 in 2011, dominated after giving up consecutive one-out doubles to Matt Carpenter and Holliday to put St. Louis up 1-0 in the first.
David Hernandez threw a perfect eighth and Brad Ziegler did the same in the ninth for the Diamondbacks.
Arizona scored three times off Wainwright in the fourth.
After one-out singles by Miguel Montero and Paul Goldschmidt, Jason Kubel lofted an RBI double to right-center to tie it at 1. Pollock, starting because of injuries to Adam Eaton and Cody Ross, lined a double off the glove of center fielder Jon Jay to bring in two and Arizona led 3-1.
The Diamondbacks added an unearned run on second baseman Descalso's throwing error in the fifth. Prado, acquired from Atlanta in the Justin Upton trade, doubled to deep right-center, then Aaron Hill hit a slow grounder to second. Descalso threw in the dirt trying to throw to first and the ball bounced off the glove of first baseman Allen Craig as Prado raced home to make it 4-1.
Arizona got two more in the seventh. With Fernando Salas on the mound, Parra and Prado doubled, then Hill singled. Marc Rzepczynski relieved Salas and gave up an RBI sacrifice fly to Montero.
Entering the game, Kennedy was 1-3 against Cardinals with an 8.59 ERA. ... Kennedy was the winning pitcher when Arizona beat San Francisco in its season opener a year ago. .. Former Diamondbacks ace Brandon Webb, whose career was cut short by arm trouble, threw out the ceremonial first pitch. ... Wainwright made his second career opening day start. ... The Cardinals send left-hander Jaime Garcia to the mound Tuesday night while the Diamondbacks go with right-hander Trevor Cahill. ... The only other Arizona rookie with three hits on opening day was Travis Lee, who did it in the Diamondbacks' first game in 1998. ... Attendance was a sellout of 48,033.