Heisey, a backup outfielder, also made a perfect throw from the center-field wall to second baseman Kristopher Negron, who threw out Alcides Escobar trying to stretch an extra-base hit into a triple in the fifth.
"He's stayed with his approach. He's putting the barrel of the bat on the ball," Reds' manager Bryan Price said. "I'm very impressed with Chris and the way he's handling himself. He really trusts that he has an approach that will work. Chris is at the point where he can be an everyday player. He is working very hard to get there."
Escobar played his first game since March 9 after recovering from a sore right forearm.
"Escobar hit a nice double and looked good in the field," Royals manager Ned Yost said.
Brett Marshall started in place of Homer Bailey, who threw a bullpen session and is expected to pitch in a minor league game on Sunday. Marshall allowed two runs, two hits and three walks in four innings with four strikeouts.
Royals starter James Shields gave up five runs and six hits in six innings with six strikeouts and no walks.
"He got his work in. He's ready to go," Yost said.
Reds left fielder Skip Schumaker left the game holding his left arm in the seventh after diving to try for Angel Franco's liner, which landed for a double.
"These guys are playing so hard," Price said. "It was a hustle play, trying to keep the ball from getting into the gap. He represents everything we want to do here. I hope he's not out a long period of time because he is really important to our club."
Royals: Shields made his fifth spring start in preparation for his opening-day start against the Detroit Tigers. Shields had allowed one run in 14 2/3 innings coming into the game with Cincinnati.
"He struggled with his command a little and had to work, which was good," Yost said. "We wanted him to throw 100 pitches. He reached all of his objectives."
Reds: Marshall was claimed off waivers from the Chicago Cubs, two days before spring training started. With Mat Latos expected to miss the start of the season, Marshall, who was originally slated for Triple-A Louisville, could stick with the Reds as a backup starter or long relief.
"I'm excited. My command is getting a little better," Marshall said. "It doesn't matter. Whatever helps the team whether it's as a closer or starter, is all right. I just want an opportunity."
Royals: Infielder Danny Valencia left in the sixth inning of Thursday's game against the Angels. He was hit on the left wrist by a pitch from Jared Weaver. X-rays were negative, but he has a bruise. ... Omar Infante is scheduled to resume throwing this afternoon.
Reds: Pitchers Latos, Jonathan Broxton and Sean Marshall appear to be headed for the disabled list to start the season. The trio are currently on throwing programs but Price doubts that they will have enough work in to be ready for the start of the season . ... Johnny Cueto shoulder and Homer Bailey groin skipped a turn but are scheduled to make their next starts. ... Catcher Devin Mesoraco has been held out of games since Monday with a sore oblique.
Hall of Fame electee Tony La Russa and former college basketball coach Bobby Knight visited the Reds.
Former Reds' pitching stars, Jim Maloney and Jack Billingham watched batting practice. They are here for the Reds' owner's weekend. Billingham was the Reds' pitcher that gave up Hank Aaron's 714th home run on opening day 1974. Maloney pitched two no-hitters while with the Reds. Billingham recalled being in the Houston Astros dugout when Maloney and Houston pitcher Don Wilson pitched no-hitters on back-to-back nights, April 30 and May 1, 1969.
The Royals selected 22-year old right-hander Yordano Ventura to complete the starting rotation. He will follow Shields and Jason Vargas in the rotation, starting against Detroit on April 3. Ventura signed with the Royals as a non-drafted free agent in 2008. He was 16 when he signed. Ventura has a 1.76 ERA this spring in three starts. He has allowed three runs in 15 1/3 innings.