PHOENIX -- Lance Lynn wasn't at his best Monday night -- just good enough for five scoreless innings and another victory.
Rafael Furcal hit the 30th leadoff home run of his career for St. Louis, the first of five home runs for the Cardinals on the night. Carlos Beltran and Matt Holliday hit back-to-back homers to open the third off Joe Saunders (2-2). Allen Craig and David Freese hit home runs to start the seventh after Arizona had scored six times in the sixth to cut the lead to 7-6.
|More on Cardinals-Diamondbacks|
|More MLB Coverage|
"It was nice for them to come out swinging the bats right from the top, a pretty good display of some power," manager Mike Matheney said. "Then obviously, the ones we got later were a lot more valuable than what we thought they would be."
Lynn (6-0), the first St. Louis pitcher to start the season with six wins since Bob Tewksbury in 1994, left with a 7-0 lead. Cody Ransom hit a two-run homer in the Diamondbacks' rally.
"We're winning games while I'm on the mound," Lynn said. "That's all that matters."
Jason Motte gave up a pair of singles in the ninth but no runs for his fifth save in six tries.
Lynn struck out seven and walked four. The 6-foot-5, 250-pound 24-year-old has allowed six earned runs in six starts. It was his shortest outing of the season, and he acknowledged he had problems with his command.
"Tonight was a struggle," Lynn said. "You know you're not going to have your best stuff every time out. Tonight I was able to battle through it."
Saunders, who entered the game with a 1.24 ERA, allowed seven runs, six earned, on nine hits in 3 1/3 innings.
"I just didn't have it," he said, "plain and simple."
The Diamondbacks, back from a 5-5 road trip, have lost three in a row and five of six. They have dropped eight of their past 10 at home.
"We haven't played the way we're capable of recently," manager Kirk Gibson said. "If we're going to beat this team we're going to have to play a lot better."
Furcal put St. Louis ahead to stay with a leadoff shot an estimated 441 feet onto the porch in left-center, just above the 413-foot sign. After two outs, Allen Craig singled, then scored on Freese's double into the left-field corner. The Cardinals made it 3-0 when Yadier Molina singled to right field. Justin Upton's throw to the plate was high and Freese slid under catcher Miguel Montero's tag.
Beltran's eighth home run, leading off the third, followed by Holliday's sixth home run of the season, put the Cardinals up 5-0.
They made it 7-0, with help of an unearned run, in the fourth. Tyler Green singled, then Montero threw the ball away on Lynn's sacrifice bunt try. Furcal followed with an RBI single, then Holliday walked to load the bases. Reliever Brad Ziegler walked home the seventh run on four pitches.
Arizona broke through against reliever J.C. Romero, who faced five batters without an out in the sixth inning. Montero led off with a single, then Ransom hit his fourth home run of the season, a 452-foot shot into the left field seats. Lyle Overbay walked and Aaron Hill singled, then both scored on Ryan Roberts' double. A.J. Pollack reached on an infield single, then Gerardo Parra's bunt brought Roberts home to make it 7-5 with no outs.
Fernando Salas relieved Romero and retired the next two batters, but Montero's RBI singled up the middle cut the lead to 7-6.
Reliever Bryan Shaw gave up home runs to Craig and Freese to start the seventh as St. Louis stretched it to a three-run game.
St. Louis batters have hit back-to-back home runs four times this season. ... The Cardinals' Lance Berkman, on the DL with a left calf strain, says he expects to be activated on Friday. ... The Diamondbacks were without first-base coach Eric Young because of the death of his father. Bullpen coach Glen Sherlock filled in at first base. ... Upton batted second in the lineup for the first time since Sept. 14, 2010. He was 0 for 3 with two strikeouts before being lifted in a double switch after the fifth. ... The Cardinals have scored in the first inning in each of their past seven games. ... The Diamondbacks send ace Ian Kennedy (3-1, 3.23) to the mound Tuesday night against the Cardinals' Jake Westbrook (3-2, 2.12). ... Arizona's franchise record for coming from behind to win is six runs, accomplished six times. ... The final seconds of the Phoenix Coyotes' series-clinching NHL playoff victory against Nashville were shown on the Chase Field big screen.