MIAMI (AP) -- Carlos Beltran homering from each side of the plate Saturday was hardly a shocker, since he had done it 10 times before.
But Lance Lynn's two-run single? That was unprecedented.
Both contributed offensively as the St. Louis Cardinals survived a slugfest against the lowest-scoring team in the major leagues and beat the Miami Marlins 13-7. Beltran homered twice and tripled, while Lynn (9-1) notched the victory despite allowing a career-high seven runs in five innings.
The Cardinals scored five runs in the first, then found themselves at 6-all in the second before pulling away. Even for the hitters, the game was no fun, Beltran said.
''I felt like I was out there playing defense for four hours,'' he said. ''It's one of those days where you have to grind and try to find a way to stay in the game.''
Manager Mike Matheny agreed.
''It felt like a doubleheader,'' he said.
Swinging left-handed, Beltran hit his 15th home run in the second inning and tripled for the first time since May 2012 in the eighth. He hit another home run from the right side in the ninth.
Beltran extended the longest active hitting streak in the NL to 14 games and raised his average to .311.
''I feel great,'' he said. ''I've been healthy, and good things are happening for me and the team.''
The Cardinals tied a season high with 17 hits. Yadier Molina singled home two runs in their big first inning, and David Freese's fourth homer in the third inning put them ahead to stay.
It's the fifth time this season the Cardinals have scored at least nine runs when Lynn has started, and this time he contributed himself, delivering a two-out single off Ryan Webb to make the score 9-6.
Lynn glanced over his shoulder as he stepped to the plate, unsure whether Matheny might call on a pinch-hitter.
''He looked right at me,'' Matheny said. ''He wanted to know what the game plan was. I told him to get a hit. Brilliant coaching, huh?''
The single raised Lynn's lifetime average to .077. He came into the game with five hits and one RBI in 76 career at-bats.
But the right-hander's pitching performance left him in no mood to smile about his hitting.
''It was a bad day,'' he said. ''I was fighting it the whole time. I only had one pitch, the fastball. When I threw it they got hits, and I wasn't able to get other pitches over for strikes.''
Giancarlo Stanton hit a two-run homer for Miami, his fifth, while Rob Brantly had two hits and three RBIs. But the Marlins never took the lead.
Tom Koehler (0-5) allowed a career-high nine runs in 4 2-3 innings.
''It was really a case of two starters out there having a tough time plowing through the lineups,'' Marlins manager Mike Redmond said.
Molina finished with three RBIs and two hits, hiking his NL-leading average to .352. Freese and Daniel Descalso had three hits each.
The Cardinals went 7 for 14 with runners in scoring position, hiking their season average in those situations to .342.
Lynn has received the best run support of any Cardinals starter this season, and they went to work for him right away, loading the bases with one out in the first before Molina singled home their first runs. Freese followed with an RBI single, Descalso doubled home a run, and Freese beat a throw home on a grounder to first.
After Juan Pierre led off Miami's first with a triple, Ed Lucas and Adeiny Hechavarria had RBI singles, and Brantly hit a two-run single.
Stanton's homer in the second inning made it 6-all, but Lynn stayed on the mound long enough to get the win - barely.
''It definitely wasn't one of his better games,'' Matheny said. ''The offense gave him a lot of room.''
Notes: Marlins 1B Logan Morrison said his stiff back felt better, but he was held out of the lineup for the second day in a row, and he might sit out Sunday, too. ... Molina's hit raised the Cardinals' average with the bases loaded to .379 (22 for 58). ... Miami rookie SS Hechavarria has committed just two errors to rank fourth in the majors in fielding at his position. ... RHP Ricky Nolasco, who faces the Cardinals on Sunday, hasn't allowed an earned run in his past 18 2-3 innings against them.