ST. LOUIS -- Twice the Cardinals plunked Logan Morrison with pitches on Friday. In the eighth inning, he struck back with a home run that provided the Marlins with the decisive run in a 3-2 win in front of 46,721 at Busch Stadium.
On a drenching 103-degree night, the Marlins were energized by Ricky Nolasco's six strong innings to win their third straight game.
In the ninth inning, Heath Bell -- pitching in his fourth straight game -- gave up a run, but he received a terrific defensive play by second baseman Omar Infante to collect the final out with the potential tying run at second.
"I think right now the ball is starting to bounce our way," manager Ozzie Guillen said after his team improved to 41-42. "I think we're starting to believe and creating a little confidence. I think that's huge, to come to the field and you feel like you're going to play well. That's the main thing in baseball."
The temperature reading matched the hottest game ever played by the Marlins. On July 20, 1997, the club also played in 103-degree heat in Arizona.
"It was hot. Not going to lie about that," Nolasco said. "I'd say that game in Boston [in June] was pretty hot. When we went to Puerto Rico [in 2010], that was hot. When I went out to warm up and it said '104', that's not fun. You just have to go out there and keep grinding it out."
Morrison was hit by Jake Westbrook pitches on the left shin (leaving a scrape) in the fourth inning, and he was struck on the left ankle in the sixth inning.
In the eighth, he connected on his third home run of the road trip, driving the ball to right off reliever Maikel Cleto.
"It wasn't on purpose or anything," Morrison said of being hit by pitches. "I'm pretty sure Westbrook didn't want to put me on base to lead off an inning, and hit me with a slider or curveball or whatever. It was just one of those things."
Morrison had his right hand iced because he hyperextended some fingers attempting to catch Carlos Beltran's single in the fifth inning.
The Marlins left fielder said he was fine, and he continues to play through aches and pains, as he collected his ninth RBI and third home run on the road trip.
"Like I said, whatever it takes to win, that's what I want to do," he said. "I'm just trying to lock in and help my team win baseball games. Put good swings on the ball, swing at strikes and let balls go. Let the result happen and focus on the process.
"We didn't win that game because I hit that home run. We won that game because Ricky Nolasco pitched his [butt] off. He kept us in the game. Jake Westbrook is a great pitcher. Every time we seemed to get a threat going, we'd hit into a double play. I think it was huge for him to go out there and pitch the way he did and keep us in the game."
Miami carried a two-run lead into the ninth inning. Bell gave up a leadoff double to pinch-hitter Skip Schumaker, who scored on Rafael Furcal's one-out infield single. With two outs, Matt Holliday was hit by a pitch, putting runners on first and second.
But the threat ended on a tremendous play by Infante, who snared Beltran's grounder up the middle before throwing to first for the game-ending out.
"It was a great play. I've got to give credit," Bell said. "Our infield won the game. They turned a couple of double plays, and he made that great play right there. You've got to give credit where credit is due. I think we won this game on defense."
Nolasco threw 86 pitches, with 58 strikes, and he allowed one unearned run.
Jose Reyes provided the go-ahead RBI hit in the seventh inning to help the Marlins record their 25th comeback victory.
Morrison's home run off Cleto gave the Marlins a 3-1 advantage.
The blast extended the team's streak to seven straight games with at least one home run. The Marlins hit 10 in the four games at Milwaukee, and they have 14 in the stretch.
On a stifling night, neither offense was able to heat up.
Nolasco ended his first half with a strong performance, giving up one unearned run in six innings.
Miami made it 1-1 in the sixth, taking advantage of two errors charged to David Freese at third.
Reyes reached on Freese's throwing error. After Hanley Ramirez tapped into a fielder's choice, Carlos Lee blistered a hot grounder that went through Freese's legs. Ramirez scored the tying run.
In the seventh inning, the Marlins claimed the lead on Reyes' infield RBI single. Greg Dobbs singled, and when pinch-hitter Austin Kearns walked with two outs, the Marlins had runners on the corners.
Reyes, with the count full, tapped a slow roller down the third-base line. Westbrook made a barehanded play, but his throw to first was wild. It was ruled an infield RBI single, and an error on Westbrook, advancing Reyes to second.
"If it was another runner I'd have a little more time," Westbrook said. "I felt like I had to rush it a little bit just because of who it was, and I just didn't make a good throw on it."