ST. LOUIS -- Cincinnati starter Luis Castillo knew he had good stuff.
After giving up a leadoff home run and a single to the first two batters and walking four guys in the first three innings, he settled down and showed it.
"The first three innings, I made a lot of pitches but after that I picked my tempo up. I picked everything up," Castillo said through a translator. "I was able to go longer and deeper in the game and that's what I want."
The loss snapped the Cardinals' four-game winning streak after sweeping the Chicago Cubs over the weekend.
Castillo (6-1) gave up two hits and struck out eight with 111 pitches. He dropped his ERA to 2.38 and hasn't taken a loss since April 3 -- a 1-0 defeat to Milwaukee.
Castillo did not allow a hit after the first inning. He retired his final 12 batters following a walk in the third.
"I was very impressed with Castillo," Cincinnati manager David Bell said. "He just kept getting better as the game went on. He was strong all the way until the end. He's back on track and he pitched as well as he's pitched all year."
Raisel Iglesias pitched the ninth for his 12th save in 14 chances.
St. Louis struck out 14 times against four pitchers.
"That's over half the outs in the game," St. Louis manager Mike Shildt said. "We don't find that to be acceptable. We don't want to put balls in play early in counts and hit weak ground balls. That's not the recipe either. That guy's got good stuff and they have a quality bullpen."
St. Louis starter Genesis Cabrera (0-2) pitched 4 2/3 innings, allowing four runs, three earned, with eight hits and two walks. It was the second start of Cabrera's career. He did not record a strikeout.
"I just wanted to get groundballs and quick outs," Cabrera said through a translator. "I didn't focus on strikeouts. I wanted to go deeper into the game."
Puig drove a one-out home run to center in the fifth, snapping a 0-for-13 skid with his 11th shot of the season.
"I wasn't looking for nothing," Puig said. "I've been preparing every day and I try to do the best I can every time I go into the game. The ball went over the fence and I felt great."
Puig had a little scare in the eighth when he ran into the wall in foul territory chasing a fly hit by Marcell Ozuna. After being checked, he remained in the game.
"I'm OK. I don't know about the wall," Puig said.
With two outs in the fifth, the Reds chased Cabrera with a single and an error by third baseman Matt Carpenter. Former starter Michael Wacha entered and gave up a run-scoring single to Jose Peraza for a 4-1 Cincinnati lead.
Carpenter hit his 24th leadoff homer in the first.
"After the home run, I was able to bounce back," Castillo said. "I just kept making my pitches."
St. Louis had runners on second and third with one out in the seventh but didn't score. Carpenter ended the inning when his groundball was deflected by reliever Amir Garrett for a close 1-6-4-3 double play.
St. Louis second baseman Kolten Wong accounted for all three outs in the first inning. He snagged two line drives, then ran a long way and slid on the wet grass to catch Puig's fly in foul territory.
Reds: Alex Blandino (right knee) began a rehab assignment at Triple-A Louisville. He has missed the entire season. Blandino suffered a torn ACL last July. ... LHP Alex Wood (lower back) has yet to make his 2019 debut but is expected to throw off the mound soon. No timeline has been set for Wood.
Cardinals: RHP Alex Reyes (broken finger) has yet to be cleared to swing a bat. He is expected to make a start in the start in the next five or six days, according to Shildt. Reyes, who is at Triple-A Memphis, has thrown just three innings in the majors this season after starting the year in a bullpen role. He then was sent back to the minors. He broke his pinkie finger after punching a dugout wall after a poor outing with Memphis.
Reds: RHP Anthony DeSclafani (2-3, 4.97) will be making his 12th start of the season. It will be his third this year against St. Louis. In his first start against the Cardinals on April 14 in Mexico, DeSclafani allowed four runs but did not figure in the decision. He earned the win in a 12-1 victory over St. Louis on April 26.
Cardinals: RHP Dakota Hudson (4-3, 3.94) has allowed just eight earned runs in his last four outings, all quality starts. Hudson has given up just one homer dating back to April 27.
More AP MLB: https://apnews.com/MLB and https://twitter.com/AP-Sports
Mike Fiers greeted with cheers before first spring start
The pitcher who blew the lid on the Astros sign-stealing scandal this winter was met with a loud ovation from the A's spring training home crowd.
Friendly to Fiers: A's pitcher gets cheers in spring game
Oakland Athletics fan K.C. Sandstrom was sitting down the right field line watching his team warm up while armed with a small dry-erase board, a marker and a statement written in all caps.
Which fan made the better leaping catch?
During the Yankees vs. Rays game, a young woman makes a nice leaping catch behind the wall in left field. Not to be outdone, a man makes a terrific leaping barehanded catch on the grass in right field.
Andujar homers in first game back from injury
Miguel Andujar cracks a solo home run to right field in the fifth inning of the Yankees' spring training game vs. the Rays.
Dustin Pedroia back on IL after Red Sox claim RHP Phillips Valdez
The Red Sox placed Dustin Pedroia on the 60-day injured list after the team claimed righty Phillips Valdez off waivers. Pedroia has played just nine games over the past two seasons.
Olney: Houston Astros players have a lot on the line in 2020
In addition to the pressure from the sign-stealing fallout, Houston stars such as George Springer are facing key points in their careers.