The only two hits that Lyons allowed over seven innings were to Billy Butler — a two-out RBI double in the first inning and a bloop single in the seventh.
Otherwise, the left-hander shut down an anemic Kansas City offense to improve to 2-0 in his week-old major league career.
The I-70 series shifts to St. Louis for games Wednesday and Thursday night.
Kansas City has lost seven straight and 18 of its past 22, erasing a 17-10 start that had a beleaguered fan base finally starting to believe in something. The Royals' 10 consecutive losses at Kauffman Stadium matches the franchise record set just last season.
Their offense has been the biggest culprit: It's produced eight runs total in the Royals' past five games, and hasn't scored more than four in a game since May 21 at Houston.
While the Cardinals had three homers Tuesday night, the Royals have that many in 14 games.
In fact, St. Louis got off to a carbon-copy start of the previous night, when Yadier Molina hit a two-run homer in the first inning from the No. 2 spot in the lineup. This time, it was Beltran who went deep off Santana to give the Cardinals a 2-0 lead after just seven pitches.
It was the first time the Cardinals got two-run shots from the No. 2 spot in the first inning in back-to-back games since 1998, when Ray Lankford hit both of them, according to STATS LLC. The Royals haven't accomplished the same feat since Amos Otis went deep in consecutive games in 1976.
The Royals got one run back right away when Alex Gordon drew a leadoff walk — the Royals began the night with the third-fewest walks in the majors — and Butler drove him in with a double to left.
But that was the hardest-hit ball of the night by Kansas City, which set a season low for hits in a game. Lyons retired 17 in a row before Butler blooped his single down the right-field line with one out in the seventh inning, and then he left the Royals' DH stranded on first base.
Other than the home runs, Santana was nearly as effectively on the mound.
The Royals' right-hander went 14 consecutive batters without allowing anybody on base at one point, and he was aided by double plays in the first and seventh innings to limit the damage.
Not even the best defense could keep the ball in the park, though. Santana allowed four homers to the Angels his last time out, and has allowed seven in his past two starts.
Notes: Molina got a rare night off. He'd played in 58 of the Cardinals' first 60 games. ... Gordon was back in the leadoff spot for Kansas City. CF Lorenzo Cain batted third in the order for the first time. ... RHP Jeremy Guthrie will be on the mound for Kansas City on Wednesday. RHP Lance Lynn will pitch for the Cardinals. ... The game took 2 hours, 7 minutes to complete.
Link to box score: St. Louis 4 at Kansas City 1
Link to game discussion at The Cardinal Nation message board