Lynn (3-0) did not allow a hit until John Mayberry Jr., led off the fifth with a double. Lynn struck out eight and walked three in his longest outing of the season.
Trevor Rosenthal and Mitchell Boggs each tossed a scoreless inning to combine for St. Louis' fourth shutout of the season.
Beltran's solo shot off Cliff Lee (2-1) in the fifth inning gave him homers in the first three games of the four-game series. Allen Craig had a two-run single in a four-run third for the Cards.
Lee easily had his worst start of the year. After walking one batter all season, he walked the bases loaded in the third that led to St. Louis' big inning.
Lee had none of his usual control in a game where the temperatures dipped into the 40s and the wind whipped all night. He walked the bases loaded, then Craig made it 2-0 with a two-out, two-run single up the middle. Lee gave up an odd run on the next batter when Yadier Molina singled through the hole to right after Chase Utley made a break for second base. David Freese chopped an RBI single to right to make it 4-0.
Lee did not walk a batter in his first two starts (16 2-3 innings) and walked only one over seven innings in his last outing. He had pitched at least six innings and issued one or no walks in each of his 20 last starts, a record for any pitcher since 1900. When he walked Cincinnati's Jay Bruce on a full count in his last start, it snapped a streak of 169 consecutive plate appearances without issuing one.
Maybe it's all that red that throws off Lee. He walked six Cardinals in a 2011 start and two other times had three-plus walk starts vs. St. Louis.
Whatever the reason, Lee again lost his control and the Cardinals took advantage.
Lee, who struck out five in five innings, wouldn't walk another batter but the Cardinals weren't finished.
Beltran led off the fifth with a shot to left-center for his fourth homer of the season. It was Beltran's 30th career homer vs. the Phillies.
Lynn, an NL All-Star last season, threw only seven pitches in the fourth and that included a strikeout of Michael Young. Lynn seemed to tire as the game wore on, with his mid-90s fastball dipping to the high-80s before he was pulled after 107 pitches. He lasted only four innings in his last start.