Kubel had started off the frame with a walk and advanced to second on pinch-hitter Ian Kennedy's sacrifice bunt before going home on Pennington's ground-ball single to right.
Josh Collmenter (1-0) got the win, giving up one run on four hits and two walks over five innings. He struck out five.
The loser was Fernando Salas (0-1), who gave up the deciding run. Salas went 2 1/3 innings, giving up two hits and a walk.
St. Louis took a 9-8 lead in the top of the 12th when Pete Kozma hit a line-drive single that scored Yadier Molina. But Arizona came right back in the bottom of the frame and Cliff Pennington scored on a Martin Prado sacrifice fly to right.
The game went into extra innings thanks to Aaron Hill's single in the bottom of the eighth that scored Gerardo Parra for Arizona. Molina had homered in the seventh for St. Louis after Arizona had scored twice in the bottom of the sixth to tie it up at 7-7.
The Cardinals scored three times in the top of the sixth on a two-run double by Daniel Descalso and an RBI single by Matt Holliday, and four times in the third, with Molina delivering a two-run single.
The Diamondbacks four times in the fifth, with the key hit a two-run homer by Paul Goldschmidt, and once in the first on a Gerardo Parra homer.
Pistorius testifies he didn't consciously pull trigger when he shot girlfriend
Pregnant Mila Kunis wins 'Best Villain' at MTV Movie Awards