Castro went 0 for 2 with a walk and looked fine running out a grounder in the first inning. The game was the exhibition finale for both clubs before their season openers Monday.
Both starting pitchers were effective. Jason Hammel shut out the Diamondbacks on two hits over four innings. He struck out five.
Bronson Arroyo went 4 2/3 innings for Arizona and allowed two runs on six hits. He struck out two and walked one.
"A real good day for him," Arizona manager Kirk Gibson said. "His location was pretty good, his fastball, he moved it around."
A throwing error by Diamondbacks left fielder Mark Trumbo led to an RBI single from Darwin Barney in the second. The Cubs then scored four runs in the sixth against setup man Brad Ziegler. Luis Valbuena had a sacrifice fly and minor leaguer Arismendy Alcantara hit a two-run homer.
Ziegler allowed four runs on three hits and two walks in one-third of an inning.
Ryan Kalish ended a successful bid to make Chicago's roster with a 3-for-3 afternoon.
Cubs: Hammel said his arm felt strong and he was able to get his pitches down in the zone and establish fastball command.
"I was battling some bad habits there the first few starts and still getting arm strength," he said. "Spring training is not about results, it's about getting ready for the season."
Diamondbacks: Arroyo looked strong enough for the team to schedule him to start the opening-series finale against San Francisco on Thursday. He dealt with a back injury earlier this spring.
Chris Owings, who drove in a run with a seventh-inning single and scored twice, found out he made the opening day roster from Gibson during the game.
Owings beat out Didi Gregorius for the starting shortstop job, and Gregorius will go to Triple-A Reno. Arizona general manager Kevin Towers said he agonized over the decision.
"We probably viewed (Owings') bat a little bit ahead of Didi at this point in time, and because of the injuries we've had to our pitching staff, we're going to have to score runs to win games," Towers said.
It also was a big day for backup catcher Tuffy Gosewisch, who made the roster over veteran Henry Blanco. Gosewisch, from nearby Scottsdale and Arizona State, played nine seasons in the minors before he won his first major league job out of camp.
"I'm just glad I'm coming back Monday," Gosewisch said. "I always thought I could play at this level and I feel like I definitely earned it."
The 42-year-old Blanco has 16 seasons of major league experience. If no team claims him, the Diamondbacks plan to keep him as an assistant hitting coach.
Towers said the team will carry 13 pitchers, including eight relievers, with left-hander Ryan Rowland-Smith earning a bullpen job. His contract will be selected on Sunday.
Randall Delgado is expected to be the fifth starter.
The 28-year-old Schlitter had a 2.79 ERA in nine appearances covering 9 2/3 innings this spring. He struck out nine and walked one unintentionally.
Cabrera was designated for assignment.
With baseball's instant replay rules in effect for both games of the series, three plays were reviewed Saturday.
Diamondbacks third baseman Eric Chavez got to a roller up the line just before it went foul and threw out Chris Coghlan to end the fifth with runners at first and third. The play was reviewed and upheld.
Renteria asked for a review in the seventh after the Cubs didn't get an out on a fielder's choice grounder to first base with the bases loaded. That call also was upheld.
Gibson asked for another look at an out call at home plate during the Diamondbacks' six-run seventh. The call was reversed to safe, giving Arizona an 8-6 lead.
Diamondbacks: Gibson said outfielder Cody Ross will play in a simulated game, then go to Reno to continue rehabbing his hip injury. He'll hit and play the outfield but needs to feel more comfortable running the bases.
Cubs: The team headed off to Pittsburgh after Saturday's game and gets Sunday off. Jeff Samardzija will start on opening day against the Pirates.