The victory gave the Marlins their fourth straight series win. Cincinnati, meanwhile, has lost five of its past six games.
Castro, acquired in the offseason as part of the package for 2017 National League MVP Giancarlo Stanton, is second on the Marlins with 16 RBIs.
Marlins catcher JT Realmuto, who had his 12-game hit streak snapped on Saturday, went 2-for-4 with two walks and two runs scored.
Joey Votto led the Reds, going 4-for-5 with four RBIs. He hit a two-run, opposite field homer to left-center in the third and added RBI doubles in the seventh and ninth.
Marlins starter Dan Straily, who did not return to the mound after a 73-minute rain delay, got a no-decision despite leaving the game with a lead. He allowed three hits, four walks and two runs in four innings.
Reliever Nick Wittgren (1-0) earned the win by pitching two scoreless innings, allowing one hit and no walks while striking out four.
Brandon Finnegan (0-3) took the loss, allowing four hits, three walks and five runs in 3 1/3 innings. His ERA rose to 8.27. Finnegan got in trouble immediately, allowing four runs in the first.
Realmuto drew a leadoff walk, and Miami had runners on second and third after Martin Prado reached on a throwing error by second baseman Scooter Gennett. The Marlins cashed in on Castro's soft two-run single over shortstop, an RBI single by Cameron Maybin and Lewis Brinson's groundout.
Miami made it 5-0 in the second. Realmuto led off with a double to left, advanced on a Prado groundout and scored on Castro's sacrifice fly.
With two outs in the third, Jesse Winker drew a full-count walk, and Votto followed with his fifth homer of the season.
Maybin added an RBI double in the seventh, giving Miami a 6-2 lead.
The Reds trimmed their deficit to 6-3 in the bottom of the seventh. Billy Hamilton doubled and scored on Votto's two-out double to right-center.
Miami scored twice in the ninth, on Miguel Rojas' pinch-hit single and a fielding error by third baseman Eugenio Suarez.
In the bottom of the ninth, Cincinnati scored twice off of reliever Junichi Tazawa. But Brad Ziegler worked around two errors by shortstop Yadiel Rivera to record his fourth save of the season and 99th for his career.
--Field Level Media
Miami | Cincinnati | |
Dan Straily | Player | Brandon Finnegan |
No Decision | W/L | Loss |
4.0 | IP | 3.1 |
2 | Strikeouts | 2 |
3 | Hits | 4 |
4.50 | ERA | 8.10 |
Miami | Cincinnati | |
Starlin Castro | Player | Joey Votto |
2 | Hits | 4 |
3 | RBI | 4 |
0 | HR | 1 |
2 | TB | 8 |
.500 | Avg | .800 |
Team | Hits | HR | TB | Avg | LOB | K | RBI | BB | SB | Errors |
Miami | 10 | 0 | 12 | .263 | 29 | 13 | 8 | 7 | 0 | 2 |
Cincinnati | 9 | 1 | 16 | .250 | 16 | 8 | 5 | 5 | 0 | 2 |