ST. LOUIS -- Matt Holliday found that elusive comfort zone.
Holliday also doubled twice and singled. Molina broke a 7-all tie with a two-run, bases-loaded single off reliever Greg Holland in the seventh inning.
After starting the game in an 0-for-12 rut, Holliday got four hits.
"It's been frustrating, my swing had been a little off," he said. "I've just been trying to battle, trying to find a good groove."
The veteran slugger made a few minor adjustments in batting practice. Those moves paid dividends.
"Some little mechanical things," he said. "It is nice to see the results."
St. Louis won for the third time in four games. Kansas City's season high-tying four-game winning streak ended.
Cardinals manager Mike Matheny was ejected in the first after umpires overruled an initial call that temporarily led to a temporary triple play.
With runners on first and second, Eric Hosmer hit a line drive that St. Louis pitcher Joe Kelly snared near the ground and threw to first. After first baseman Matt Adams tossed the ball back to Kelly, the pitcher then threw to second for the apparent third out.
But after a three-minute conference that included crew chief Dana DeMuth, the umpires ruled that the ball hit the ground. Bench coach Mike Aldrete took over for Matheny.
"I saw the ball bounce," said Hosmer.
Matheny said he wasn't arguing about the reversal. Instead, he said he was upset that the umpires didn't make an immediate ruling on Hosmer's ball.
"The issue was, the pitcher came up with the ball looking for a call to be made," Matheny said. "The play was not to first base if we get a quick ruling on what it is. That was my argument."
Said DeMuth: "Our main concern was to get the call right. When I got everybody together, nobody had a catch."
Holliday staked his team to an early 2-0 lead with a 431-foot homer off Bruce Chen in the first. Molina also hit a two-run homer in the first.
Chen gave up six earned runs on seven hits over 1 2/3 innings, his shortest start of the season.
"I'm definitely not very happy with the way I pitched," Chen said. "I just didn't pitch well enough to help my team win."
Mike Moustakas homered and drove in four runs for the Royals, who rallied from a 6-1 deficit to a take a 7-6 lead with three runs in the seventh.
Tim Collins (4-1) took the loss.
Alcides Escobar had a two-run single in the seventh to give the Royals a 7-6 lead.
Holliday tied it with an RBI single in the seventh. Allen Craig walked to load the bases for Molina.
Kansas City came back with single runs in the fourth, fifth and sixth innings before taking the lead with three in the seventh. Hosmer walked and Jeff Francoeur singled before Moustakas added an RBI hit. Brayan Pena followed an infield single to load the bases and Escobar poked a hit to right to give the Royals a 7-6 lead.
"I was really proud of the offense, the way they stayed after it," Kansas City manager Ned Yost said. "Down 6-1, they just kept putting together good at-bats. We battled back and got the lead, but from the seventh inning on (our pitchers) just really struggled to command the ball."
Kelly, making his second major league start, gave up two earned runs on seven hits in 4 1/3 innings.
Carlos Beltran added three hits and extended his hitting streak to nine games. He pushed the lead to 5-1 with an RBI single and Holliday followed with an RBI double.
Moustakas hit his 10th homer in the fourth. He also had a run-scoring single in the first and an RBI groundout in the fifth.
The Royals' five previous games had all been decided by one run. They won four. ... Kansas City RHP Luis Mendoza (2-3, 4.89 ERA) will face Adam Wainwright (5-7, 4.75) in the series finale on Sunday. Mendoza took a no-hit bid into the seventh of his previous start, a 2-1 win over Milwaukee on Tuesday. ... The Cardinals are 39-29 in regular-season meetings with their cross-state neighbors. ... Billy Butler made his first pinch-hitting appearance this season for the Royals and flied out. ... Kelly picked off Chris Getz at first in the third inning. Kelly became the third St. Louis pitcher to register a pickoff this season, along with Jaime Garcia and Jake Westbrook.