At 5 hours, 32 minutes, it was the longest home game in Diamondbacks history as far as time elapsed and tied for the longest at home in terms of innings.
"This is the kind of game you remember as the season goes," Pennington said. "Two weeks from now, if we find ourselves down by four in the sixth, it will be like we have done this before."
"We put up nine runs and got a lot of hits," the Cardinals' Allen Craig said. "We had some spots where we could have got some more. We just couldn't get it done. That was just a great game, though, to be part of."
Pennington was 0-for-11 to start the season before getting three hits in the extra innings.
The Diamondbacks, who won two of three against the Cardinals, came from behind four times to either take the lead or tie the game.
"Excuse me if I am smiling," Arizona manager Kirk Gibson said. "The things we practiced on, just being tough mentally, they hung in there. I don't know how many lead changes there were. It was over five hours long, 16 innings. It is just a great contribution. The guys were all there. We didn't panic when we got behind. Just outstanding. Just a great win."
Josh Collmenter (1-0) allowed one run on four hits in five innings to get the victory. He had pitched 1 2/3 innings in the team's 6-1 loss Tuesday night.
"I felt good," Collmenter said. "It was part adrenaline, part wanting to keep in the game for the team. I think we were down to one guy and I wanted to go as long as I could. Health-wise I felt good. My arm felt good. In that situation, you don't want to let the guys down."
Fernando Salas (0-1), the last pitcher available in the St. Louis bullpen, took the loss.
In the 16th, Kubel drew a leadoff walk. Ian Kennedy, Arizona's Opening Day starter, pinch hit for Collmenter and put down a sacrifice bunt to move Kubel to second. That brought up Pennington, whose single to center finally ended it.
"We had some chances to finish it off. They did, too," St. Louis manager Mike Matheny said. "It was just one of those back-and-forth to see who's standing at the end."
Daniel Descalso tied his career high with four hits for St. Louis, including two doubles.
Paul Kozma's RBI single off Collmenter put St. Louis up 9-8 in the 12th, but in the bottom half, Mitchell Boggs allowed a leadoff single to Pennington and hit Eric Chavez in the ribs. Parra's sacrifice bunt advanced the runners, then Prado's sacrifice fly tied it at 9-all.
Arizona's Brandon McCarthy allowed six runs on nine hits in five-plus innings in his first outing since sustaining a horrific head injury Sept. 5.
McCarthy, while pitching for Oakland, took a line drive to the side of his head off the bat of Erick Aybar of the Los Angeles Angels, sustaining what the Athletics described at the time as life-threatening injuries. McCarthy was hospitalized and underwent surgery after sustaining an epidural hemorrhage, brain contusion and skull fracture.
He signed with Arizona as a free agent in the offseason.
Molina singled in a pair in the Cardinals' four-run third.
Lance Lynn, an 18-game winner last season, had a 4-1 lead after four but never got an out in the fifth.
Parra narrowly missed a second home run with a triple off the wall in left-center, then scored on Lynn's wild pitch. Prado singled, then Hill bounced one over the fence into the pool area in right-center for a ground-rule double to put runners at second and third.
Randy Choate relieved Lynn and gave up an RBI sacrifice fly to Miguel Montero. Choate left in favor of right-hander Joe Kelly, whose first pitch was lined by Goldschmidt off the top of the wall in left for a two-run homer that put Arizona up 5-4.
But McCarthy didn't get an out in the sixth. Matt Adams singled and Kozma doubled to put runners at first and second. Left-hander Tony Sipp replaced McCarthy and surrendered a two-run single to Descalso, and St. Louis regained the lead 6-5.
Arizona's previous longest home game was 5 hours, 14 minutes. ... Parra opened the game for Arizona with his first career leadoff home run. ... Arizona OF Cody Ross, on the 15-day DL (left calf strain), begins a rehab assignment at Class A Visalia on Thursday. ... The Cardinals open a three-game series at San Francisco on Friday, sending RHP Jake Westbrook to the mound against the Giants LHP Barry Zito. ... LHP Wade Miley goes for the Diamondbacks at Milwaukee on Friday, with RHP Kyle Lohse starting for the Brewers.
Smeltzer backed by Garlick, Miranda as Twins beat Royals 6-4
— Kyle Garlick and Jose Miranda each drove in two runs, leading Devin Smeltzer and the Minnesota Twins past the Kansas City Royals 6-4 on Friday night.
Odor homers in 13th, Orioles finally beat Rays, 8-6
— Rougned Odor hit a two-run homer in the 13th inning and Baltimore Orioles snapped a 15-game losing streak to the Tampa Bay Rays with an 8-6 victory on Friday night.
Odor walks it off for O's in 13th with a 2-run HR
Rougned Odor connects on a two-run home run in the 13th and the Orioles win 8-6.
Jose Miranda drives in late insurance runs in Twins' win
Kyle Isbel nearly makes a spectacular catch in center field, but it bounces out of his glove, allowing Jose Miranda to tally a two-run double.
Pérez throws 1st shutout since 2014, Texas blanks Astros 3-0
— When manager Chris Woodward walked out to the mound with two outs and two on in the ninth inning, Texas Rangers starter Martín Pérez wasn't worried about being taken out.
Martín Pérez's shutout propels Rangers to win
Martín Pérez tosses a complete game shutout to propel the Rangers to a 3-0 win vs. the Astros.