Castillo (2-5) struck out six and walked three in winning his second straight start. An All-Star last year, the right-hander made his 87th career start in the big leagues.
"It's marvelous," Castillo said. "To throw nine innings of a baseball game, I'm super, super emotional."
Castillo outpitched Adam Wainwright (4-1), who allowed three runs in six innings. The Cardinals lost for the fourth time in six games.
Only twice did St. Louis get a runner to third against Castillo, who has given up just three earned runs in his past 15 innings.
Castillo retired 13 straight before walking Paul Goldschmidt with two outs in the ninth, then got Brad Miller on a grounder to end it. With the help of a double play in the fifth, Castillo faced one over the minimum in the final six innings.
"It is pretty rare in today's game," Reds manager David Bell said of the complete game. "So it's that much more special. I don't know what was better, seeing him pitch or the smiles. It's great for him. It's great for the team."
Votto hit his seventh home run of the season in the first off Wainwright to give the Reds a 2-0 lead. The two-run drive came on a 3-1 count with one out to drive in Nick Castellanos.
Votto has faced Wainwright 57 times over their long careers, batting .333 with four homers and 11 RBI.
Friday marked the 15th anniversary of Wainwright's big league debut. In the latter part of his career he's adjusted to become more of a finesse pitcher rather than the hard thrower he's been most of his career.
He said the touch wasn't always there Friday, especially in the first when he gave up three hits. All three, including Votto's homer, came off "sloppy" cutters.
"Luckily I had a decent sinker going and nice movement on my fastball," he said. "But my curve ball was horrible. And my cutter, we found out right away, was flat and slow."
Paul DeJong hit an RBI double in the second for St. Louis.
TAKE A WALK, CLIMB THE CHARTS
Cardinals 3B Matt Carpenter drew his 661st career walk in the sixth. That moved him past St. Louis great Rogers Hornsby to seventh on the team's all-time list.
Reds: OF/DH Jesse Winkler, who was pulled from the Cincinnati game Thursday against the Cubs, wasn't in the starting lineup on Friday. He's dealing with tightness in his lower back. ... INF Mike Moustakas was out of the lineup after being hit in the left foot in his last game.
Cardinals: RHP Giovanny Gallegos was put on the 10-day injured list with a groin strain. Gallegos (1-2, 3.97) was removed in the seventh inning Thursday after giving up three runs on two hits and a walk, all on 13 pitches, as he took the loss as St. Louis split a doubleheader against Detroit. RHP Nabil Crismatt replaced Gallegos on the active roster.
Cardinals: RHP Dakota Hudson (2-2, 3.19) won his past two decisions, including a 7-5 win at Cincinnati on Aug. 31. He went seven innings, giving up two runs (one earned) and struck out seven in the win against the Reds.
More AP MLB: https://apnews.com/MLB and https://twitter.com/AP-Sports
What to make of the slow start to MLB's offseason
Jeff Passan examines what's to come this coming MLB offseason while comparing its slow nature to the fast paced NBA off season.
Tampa Bay Rays OF Randy Arozarena released in Mexico
Rays outfielder Randy Arozarena was released in Mexico's Yucatan state Thursday prior to a scheduled hearing after his former partner told a judge that she did not want to press charges.
Atlanta Braves' Charlie Morton has faint memories of previous stint with team
Charlie Morton, who returned to the Atlanta Braves on a one-year, $15 million deal, says he doesn't remember a lot from his brief stint with the team 12 years ago.
Cincinnati Reds, Colorado Rockies involved in four-player trade
The Rockies acquired right-hander Robert Stephenson and minor league outfielder Jameson Hannah from the Reds for right-handed pitchers Jeff Hoffman and Case Williams, a minor leaguer.
Free agent Adam Wainwright uncertain of his future with St. Louis Cardinals
Adam Wainwright, who has spent his entire 15-year MLB career with the Cardinals, is unsure of his future with the team entering free agency. "We just don't know what they're going to be offering -- or if they will offer," he said.
Who rivals Mookie Betts on the bases and other finds in the 2021 Bill James Handbook
From the runnin' Rockie to the future of the 300-win club, these numbers jump off the pages of the go-to analytics guide.