The four hits tied the franchise record for a player in his Marlins debut.
"It was just a great team win, Dillon [Peters] did a great job of giving us a chance to win and keeping us in the game," Shuck said. "Once we got in the later innings, we had some chances to score some runs and we did. We had some good at-bats with runners in scoring position and we were able to come out on top."
The 30-year-old made the start Friday at Marlins Park, the same day he was called up from the club's Triple-A affiliate. He also scored two runs in the victory.
"That was nice, to get a little shot in the arm from J.B. there," Marlins manager Don Mattingly said. "I didn't really expect four but we liked what we saw in spring training."
One of the best -- and oddest -- plays of the game came in the bottom of the fifth inning. The Marlins trailed 2-1 when Starlin Castro stepped to the plate. He settled in against Pirates starter Chad Kuhl in the bottom of the frame. The Marlins had the bases loaded.
Castro ripped Kuhl's first offering -- an 85.6-mph slider -- deep to right center field, for what looked like a sacrifice RBI. But that was just the beginning of the peculiar play. Pirates right fielder Gregory Polanco gloved the ball in right field and Peters scored the first run.
But instead of ending the play and limiting the damage, Pirates catcher Elias Diaz tried to get Miguel Rojas out at second base.
Diaz's throw went past second base and into the outfield. The ball nearly rolled to the wall, before being picked up and thrown back to the diamond. By the time it got back, Derek Dietrich and Rojas also scored for the Marlins, giving Castro a rare 3-run sacrifice fly.
The Marlins added another run on a sacrifice bunt by Chad Walalch in the sixth frame. Justin Bour brought Castro home on a two-run homer in the bottom of the seventh inning.
Pittsburgh's only runs came off of Diaz's two-run home run in the fifth frame.
Peters earned his second victory of the season, allowing four hits and two runs, while tossing three strikeouts and two walks in six innings.
"I feel like I'm attacking every pitch, or at least I try and announce my presence," Peters said. "I think just today, the execution was higher than it was in the last outing."
The Marlins and Pirates resume their three-game series at 7:10 p.m. Saturday in Miami.
"It was a pretty good game for us all around," Mattingly said. "I thought we had a pretty good approach, good starting pitching, tough baseball and everybody got their outs. So it was a pretty clean game for us."