Alfonso Soriano gave the Cubs a 3-2 lead in the top of the fifth with two outs, just after Reds starter Mat Latos departed the game early because of a strained left calf. Soriano hit his single to right field off of Minor Leaguer Justin Freeman, scoring Castillo.
Latos pitched 4 2/3 innings of an expected six, and allowed three runs (two earned) on four hits with two walks and two strikeouts.
Cubs starter Matt Garza worked four innings and gave up two runs and seven hits with three walks and six strikeouts.
Chicago took a 1-0 lead in the first inning when Bryan LaHair hit a two-out double to center field that scored Darwin Barney. It became a two-run game in the third. After Garza reached on a Joey Votto error at first base, he scored on Barney's one-out double.
Cincinnati scored two in the bottom of the fifth. Votto led off with a double against Shawn Camp and scored on Chris Heisey's sacrifice fly. A Drew Stubbs RBI single to left field scored Jay Bruce and made it a one-run game.
The Reds' possible closer because of a season-ending injury to Ryan Madson, Sean Marshall entered the game in the sixth and worked one scoreless inning with one hit, one strikeout and one wild pitch.
The Reds tied the game at 3 when Cubs pitcher Lendy Castillo was called for a balk in the seventh.
Brandon Phillips went 4-for-5 and is hitting .298 for the spring.
Up next: Coming off an outing where he uncharacteristically walked five batters as he tinkered with a new sinker grip, Bronson Arroyo will start for the Reds on Wednesday vs. the Angels. In the 4:05 p.m. ET game at Goodyear Ballpark, Cincinnati will also have Logan Ondrusek appear out of the bullpen. The Angels will start Dan Haren.
Mark Sheldon is a reporter for MLB.com. Read his blog, Mark My Word and follow him on Twitter @m_sheldon. Carrie Muskat is a reporter for MLB.com. She writes a blog, Muskat Ramblings, and you can follow her on Twitter@CarrieMuskat. This story was not subject to the approval of Major League Baseball or its clubs.