It was the seventh consecutive loss for the Pirates, who are slipping in their attempt to stay in the National League wild-card chase.
Castro drove in the game's first run and Rizzo added to a three-run rally with his two-run double. Castro finished off the Cubs' scoring with a three-run home run in the sixth inning.
Chicago starter Chris Rusin (1-2) used the support to pick up his first major-league win. He allowed four hits and two runs over five innings. He struck out five and didn't walk a batter.
Castro knocked in Luis Valbuena with a single in the second inning and Chicago went up 4-0 in the fourth when James McDonald (12-8) loaded the bases with three walks and Rizzo rapped reliever Justin Wilson's second pitch into right for a double. Alfonso Soriano made the score 4-0 with a single that scored Valbuena.
Pittsburgh got within 4-3 when Pedro Alvarez knocked in a run in the fifth and Gaby Sanchez singled in one run and Alvarez got another RBI in the sixth. But after a walk and a hit batter, Castro jerked a pitch into the left-field seats, making the score 7-3.
The Pirates got a home run from Andrew McCutcheon -- his 27th this year -- in the seventh for the final score.