Infante also hit a solo shot in the first and an RBI double in the second inning to finish with five RBI for the Marlins, who have won six straight and 12 of the last 14 games against the Pirates.
Morrison finished 4-for-6 with three RBI for Florida, which banged out a season-high 22 hits, three shy of the club record.
"It was fun. It's good when the ball is falling and finding holes," Morrison said.
Florida entered the third with a 2-1 lead after Pedro Ciriaco singled home Ryan Doumit in the Pirates' second.
Mike Stanton began the decisive frame with a single to center field, but was replaced by a pinch-runner. Stanton had returned to the lineup Friday for the first time since leaving last Saturday's win over Philadelphia with a tight right hamstring and appeared to have aggravated the injury.
Morrison followed with a double and Donnie Murphy scored when Ryan Ludwick's throw from right field deflected off a sliding Morrison. Jose Lopez then pulled up lame at first after an RBI single and was taken out.
When Bryan Petersen lined a base hit to right, Pittsburgh starter Ross Ohlendorf (0-2) was lifted from the game without having retired a batter in the third.
"Today was just bad," Ohlendorf said simply.
Daniel McCutchen took over on the mound and promptly gave up consecutive singles to John Buck and Florida starter Ricky Nolasco (10-10) to score Gaby Sanchez, who pinch ran for Lopez. Emilio Bonifacio then lofted a sacrifice fly before Infante went deep for a second time, although he did get some assistance.
Infante launched a fly ball to left field and a backpedaling Alex Presley had the ball go off his glove in front of the wall for a three-run homer.
Murphy stroked a two-out single and scored on Morrison's two-run blast to right-center off Aaron Thompson, who had just been summoned from the bullpen.
Sanchez walked and Petersen singled before Buck popped out to the catcher in foul territory to finally end the frame. Florida sent 14 men to the plate in the third and set a franchise record for hits in an inning with 10.
Morrison and Buck knocked in runs in the fifth to put Florida up 13-1.
The Pirates got RBI singles from Presley and Derrek Lee in the fifth and sixth innings, respectively. Ciriaco drove in Pittsburgh's fourth run with a two-out triple in the eighth.
Florida's previous mark for hits in an inning was nine, last done for the fourth time on September 17, 2001 at Montreal...Infante recorded the sixth multi-home run game of his career...Nolasco gave up three runs on nine hits with five strikeouts in six innings...Nolasco had his scoreless streak against the Pirates snapped at 22 2/3 innings...Ohlendorf was tagged for six runs and 10 hits in two-plus frames...Florida's 22 hits were the most allowed by the Pirates this year.