Carlos Martinez shook off a slow start on the mound, and also a fastball that bruised his pitching arm and left him face down in the batter's box.
Martinez struck out nine in seven innings Tuesday to help the St. Louis Cardinals beat the Miami Marlins 4-3.
The young right-hander trailed 3-0 after 1 1-3 innings before settling down. He retired the final seven batters he faced, including three after taking a 94-mph fastball in the shoulder while trying to bunt in the seventh.
''At that moment I thought, `Oh my God, it's broken,''' said Martinez (8-3). ''But a couple of minutes later I felt great and said I can go the next inning.''
With family and friends from his native Dominican Republic in the crowd, including some who had never seen him pitch, Martinez was overthrowing early. He gave up a two-run homer in the first inning to major league home run and RBI leader Giancarlo Stanton, a shot estimated at 484 feet.
''Carlos had high energy, which we don't have a problem with,'' Cardinals manager Mike Matheny said. ''But he was having trouble separating that from how he was throwing. He was heaving. He settled down, though. His last three innings were probably his best.''
Martinez allowed eight hits and walked one. He improved to 5-1 with a 1.33 ERA in his past seven starts.
Stanton's homer matched his previous longest this year, and he now has 26 homers, including the longest two in the majors in 2015.
''That was an absolute missile,'' said Matheny, ''one of the furthest balls I've ever seen hit in my life.''
But the NL Central leaders rallied. With the score 3-all and two outs in the seventh, Mark Reynolds hit a full-count pitch off the right foot of pitcher Sam Dyson (3-3) for an infield single to put St. Louis ahead.
Earlier in the inning, Martinez was hit in the upper arm by a pitch from Dyson, fell to the ground and was slow to rise.
''I didn't like that at all,'' Matheny said. ''He seems to be OK. It will be interesting to see tonight how it tightens up. I imagine it will a little bit.''
Martinez took his base and showed no ill effects when he returned to the mound, throwing one pitch 98 mph. He said he expects to make his next start as scheduled.
Justin Heyward hit his eighth homer for the Cardinals. Trevor Rosenthal pitched around a single in the ninth for his 22nd save in 23 chances.
Stanton's homer, which landed near the beer garden in left field, put Miami ahead 2-0 in the first. It was his 11th homer in June, breaking the club record for the month set by Hanley Ramirez in 2008.
Adeiny Hechavarria had an RBI single in the second for the Marlins, but they went 1 for 8 with runners in scoring position. Miami has lost five of its past six games.
''When you play a team like the Cardinals, there's a reason they have the record that they have,'' manager Dan Jennings said. ''When you get leadoff guys on, you have to get them over and get them in. Unfortunately we didn't do that.''
Marlins starter Jose Urena allowed three runs in five innings, his worst outing this month.
Heyward homered into the upper deck in right field in the fourth, and Xavier Scruggs hit a two-run double later in the inning to make it 3-all.
Scruggs, playing in only his fifth game, had three hits. Teammate Jhonny Peralta grounded into two double plays and struck out three times.
Cardinals: 3B Matt Carpenter sat out with a tight back but was available off the bench.
Marlins: RHP Jarred Cosart (vertigo) is expected to be activated Thursday, but it's unclear when he'll rejoin the rotation. LHP Justin Nicolino, who pitched seven shutout innings in his major league debut Saturday, will get another start, Jennings said. ... 1B Michael Morse (finger) is on a rehab assignment at Triple-A New Orleans and may come off the DL soon.
Umpires: Plate ump Adam Hamari was knocked down and shaken up when hit in the chest protector by a fastball in the eighth inning, but he worked the rest of the game.
LHP Jaime Garcia (2-3, 1.76), who has pitched 14 consecutive scoreless innings, is scheduled to start Wednesday for the Cardinals against RHP Mat Latos (2-4, 5.37). Garcia will be facing the Marlins for the first time since 2011.
Link to box score: St. Louis (46-24) 4 at Miami (30-42) 3