ST. LOUIS — Jason Heyward closed his eyes in the bright glare of the sun, dropped slowly to the turf on his backside, and hoped for the best.
The St. Louis Cardinals right fielder made the key defensive play against the cross-state rival Kansas City Royals strictly by feel, preserving an eighth-inning lead by snaring a sinking liner by Kendrys Morales.
"I saw it off the bat and that was the last time I saw it until I went to throw it in," Heyward said after the 3-2 victory on Saturday. "I felt it hit my glove and I was surprised when it hit my glove."
The catch for the second out of the eighth with a man on was certainly deflating for the visitors.
"That was a lucky catch," Royals manager Ned Yost said. "I mean, there's some skill involved with that, but if you watch the replay he wasn't even looking.
"That's when you start thinking, 'Whoa, we may be in trouble here.'"
Call-up Tyler Lyons had a solid outing and Mark Reynolds hit the go-ahead homer in the fifth for the Cardinals, who held the Royals' offense down for the second straight day.
"I figured it was either out or it was going to be a can of corn," Reynolds said. "So I just jogged anyway."
Alex Gordon and Salvador Perez homered for the Royals, who took two of three from the Cardinals at home last month and will be trying to avoid a sweep in the finale. The series matches teams with the best records in each league and the Royals have been held to two runs and 10 hits.
"Sometimes you go through slumps like this," Gordon said. "But we'll get out of it."
Matt Carpenter and Jason Heyward added an RBI each for St. Louis, which is a major league-best 41-21 overall and 24-7 at home. The Cardinals used five relievers over the last four innings to hold a one-run lead with Trevor Rosenthal getting the last four outs for his league-leading 21st save in 22 chances.
The Royals' eighth did not lack for dramatics. Rosenthal rallied from a 3-0 count to get Gordon on an infield popup with two on for the third out.
The first two games were sellouts, giving the Cardinals 13 on the year. Most of announced attendance of 45, 981 stuck around after a 24-minute rain delay before the top of the sixth.
Lyons (1-0) allowed two runs and three hits. He failed to make an impression in three starts earlier in the year in place of injured Adam Wainwright, entering with a 5.54 ERA, but fared much better replacing injured Lance Lynn.
Gordon's eighth homer gave the Royals the lead in the second and Perez tied it at 2 with his 10th homer in the fourth.
The Cardinals scored two runs on five hits in the third, a rally that began with Kolten Wong's leadoff triple. Reynolds' fourth homer, in the fifth off Jeremy Guthrie (4-4), snapped a 2-all tie.
Royals: LHP Jason Vargas (forearm strain) was placed on the 15-day DL.
Chris Young moves up a day to start the series finale for Kansas City. He took a no-hitter into the seventh his last time out. John Lackey is 6-1 with a 2.02 ERA in 11 career starts at Busch Stadium, including 4-1 with a 1.73 ERA this year.
Both teams played the infield in with a man on third and one out in the first and didn't get burned. The Cardinals clicked again in the sixth, helping to preserve the lead, when Matt Belisle got Salvador Perez on a broken-bat groundout.
Cardinals manager Mike Matheny said Lynn was the pitcher who had made the most improvement at the plate "by far — mostly because he couldn't have gotten much worse." Lynn is batting .182 with one RBI after entering the year a career .065 hitter.