Castillo retired the first two Cardinals but walked Paul Goldschmidt on a full count. He had two strikes on Nolan Arenado and appeared to throw strike three.
Hallion called it a ball.
Arenado then singled to right field. Aristides Aquino threw to first base, trying to catch Arenado rounding the base. The ball, though, skipped past first baseman Joey Votto for a throwing error and Goldschmidt scored.
Tyler O’Neill grounded over the third base bag and Brandon Drury bounced his throw past Votto, another throwing error, and Arenado scored.
From there, Castillo was in complete control and command — five scoreless innings and four hits. He left after six innings and 102 pitches.
The Reds, though, couldn’t help with the bats against St. Louis starter Andre Pallante, making his second start of the season.
Drury singled with one out in the first , extending his hitting streak to nine games, and Pallante issued a pair of two-out walks to fill the bases. But Matt Reynolds lined to center and that was the Reds’ last real threat.
The Reds did get back-to-back one-out singles in the third from Tommy Pham and Votto, but Kyle Farmer bounced into an inning-ending double play.
Pallante pitched 5 1/3 innings and gave up no runs, four hits, two walks and struck out four. Genesis Cabrera retired five straight to protect the 2-0 lead through seven innings.
Giovanny Gallegos took over for the eighth and walked pinch-hitter Colin Moran on a full count, the first Reds leadoff batter to reach base.
With one out, he also walked Drury after a nine-pitch full-count battle, putting the potential tying runs on base. Pham struck out.
Gallegos thought he threw two strikes to Votto that Hallion called balls. He yelled at Hallion and held up two fingers, indicating, “You missed two.”
Then he walked Votto on a full count, his third full-count walk of the inning that filled the bases. But Farmer popped up on the second pitch and the Reds once again left the bases loaded.
St. Louis closer Ryan Helsley closed it easily, a 1-2-3 ninth that ended with another in the long line of Aquino strikeouts, this one on a 100 miles an hour fastball.
Rookie catcher Chris Okey, called up from Class AAA Louisville to replace injured Tyler Stephenson, made his major league debut in the bottom of the eighth.
He is the eighth player to make his major league debut and the 12th rookie to play for the Reds. He is also the 46th different player to appear in at least one game for the Reds this season.
Hunter Greene starts for the Reds Saturday afternoon, and he will face the historic battery of pitcher Adam Wainwright and catcher Yadier Molina. It will be their 316th game as batterymates, passing Warren Spahn and Del Crandall for the National League record. The all-time record is 324 by Mickey Lolich and Bill Freehan.