ST. LOUIS - Jaime Garcia knows there's plenty of room for improvement. He had two mishaps covering first base, one of them contributing to the Arizona Diamondbacks' two-run first, and bounced a few fastballs, too.

The St. Louis Cardinals lefty has been waiting long enough for a taste of success that none of it bothered him too much.

"It probably wasn't my best," Garcia said after winning for the first time in nearly a year in a 6-4 victory over the Arizona Diamondbacks on Tuesday night. "It's been a long time but I try not to think about it that way.

"Whatever happened today, you put it in the past and you move forward and get ready for the next one."

Randal Grichuk homered with two RBIs and Jhonny Peralta also drove in two runs for the Cardinals, who are a major league-best 30-16. Garcia (1-1) hadn't won since June 15 at home against the Nationals.

Rookie Yasmany Tomas had two doubles and three RBIs for Arizona, but also made two big outs. He struck out against Matt Belisle with the bases loaded to end the seventh and hit a ground ball for the final out with the tying runs in scoring position against Seth Maness, who earned his third save in four chances.

Nick Ahmed homered for the Diamondbacks, who have lost eight of their last nine against St. Louis.

Matt Holliday had an RBI single and double and has reached safely in 42 consecutive games to start the season, matching former teammate Albert Pujols (2008) for the longest streak in the majors since 2000.

Garcia was more impressive in his season debut coming off thoracic outlet surgery to alleviate numbness and tingling in his left arm and hand. He allowed two runs in seven innings in a 5-0 loss to the Mets in New York last week.

In his second start, the lefty allowed three earned runs, and got a lot more support.

He didn't think nerves accompanying his first home start contributed to his fielding woes.

He was late covering first base and Mark Trumbo got an infield hit that fueled the Diamondbacks' two-run firs. He also tried to make a bare-hand grab of a relay from first baseman Mark Reynolds for an error in the sixth that put two on, but rallied to get a double-play ball from Ahmed.

"I was trying to do my best to, I guess, not let any emotions get to me and just control the next pitch and not worry about anything else," Garcia said. "And I did a pretty good job there."

Archie Bradley (2-2) allowed six runs in 3 2-3 innings for Arizona, the third straight tough start coming off the 15-day disabled list after taking a line drive in the face by Colorado's Carlos Gonzalez on April 28. Bradley, who sustained a right sinus fracture, has surrendered 14 runs in 10 2-3 innings in that stretch.

"The injury, it's past," Bradley said. "It's just bad baseball, it's bad pitching, it's bad pitches, it's bad sequences.

"Just everything is not good right now and I know that. I don't feel sorry for myself. I don't think anyone else should. I've just got to get it fixed. I've got to get it fixed quick."

TRAINER'S ROOM

Diamondbacks: Reliever David Hernandez (elbow surgery) is scheduled to throw for Double-A Mobile Wednesday.

Cardinals: Lefty Marco Gonzales, pitching at Triple-A Memphis, will get a pain-killing injection for a shoulder injury that the team anticipates will sideline him three weeks.

UP NEXT

Lance Lynn ends a run of three straight starts against American League teams in the finale against Josh Collmenter. Both have had success against the opposition, Lynn going 2-0 with a 2.61 ERA against Arizona and Collmenter 2-1 with a 0.96 ERA against St. Louis.

STRIKING

Diamondbacks lefty Vidal Nuno, recalled earlier in the day after Enrique Burgos went on the DL, struck out five of six batters beginning with Matt Carpenter to end the fourth.