With a pair of two-out swings in the ninth, everything changed.
Rookie Nick Senzel singled home the tying run, and Jesse Winker followed with another single that gave the Reds a 3-2 victory Wednesday and ended the Astros' long run of leaving towns with at least one win.
Houston hadn't been swept this season and had avoided a road sweep since September 2017 at Oakland. Roberto Osuna (3-1) couldn't close it out as the Astros lost for the first time this season when leading after eight innings.
"Not being able to complete it is frustrating," Osuna said.
The AL West leaders dropped all three in Cincinnati and have lost a season-high four in a row overall.
The Reds have finally found a little momentum. They've spent the season trying to dig out of their 1-8 start and last place in the NL Central. They moved ahead of the Pirates while putting together a four-game winning streak, matching their longest of the season.
Pulling off three straight one-run wins over the Astros amounted to their best moment of the season.
"I will say it was a lot of fun," Winker said. "That was our best series. We beat three really good pitchers and a really good bullpen. It was just a really good series."
Former American League MVP Jose Altuve returned to Houston's lineup after missing 35 games with a hamstring strain. He went 0 for 4 and grounded into a double play.
Michael Brantley's two-run homer put Cole in position for only his second career win over Cincinnati. Jose Peraza doubled in the ninth and came around on Senzel's hit. Winker finished it off with a single up the middle just out of Altuve's reach. Matt Bowman (1-0) pitched two innings.
Cole is 1-8 against Cincinnati with the Pirates and Astros, who have lost 12 of his 13 starts against the Reds. Even when he pitches well, he can't get a win over them.
"When it's all said and done, it just didn't go our way," said Cole, who limited the Reds to Yasiel Puig's homer in six innings.
Cole gave up six hits and fanned eight . The major leagues' strikeout leader raised his season total to 148.
Brantley completed a productive series with his two-run shot in the sixth inning off Tyler Mahle, who was making his first start since complaining publicly about quick hooks from his manager. Brantley had three hits for the second straight game. He leads the majors with 31 multihit games.
Mahle was coming off his shortest start of the season, only 4 1/3 innings of a 7-2 loss to the Rangers on Friday. Afterward, he said manager David Bell wasn't letting him get deeper into games, saying "it's getting pretty ridiculous at this point." Bell spoke with him after the comments.
Mahle allowed four hits and one walk in a career-high seven innings.
Winker also threw Tony Kemp out at the plate as he tried to score from second on Brantley's single to left field in the eighth inning. The call was upheld after a video review.
RAINY DAYS AND MONDAYS ... AND TUESDAYS ... AND WEDNESDAYS ...
The start of the game was delayed 31 minutes because of rain. Each of the Reds' last four games -- all at Great American Ball Park -- had weather delays.
GOODBYE OLD FOE
The Reds got the better of a reunion of once-familiar foes that rarely play each other anymore. Houston's 847 all-time games against Cincinnati are by far its most against any opponent. The Astros were visiting Cincinnati for the first time since 2012. They're 40-38 all-time at Great American.
Astros: Cionel Perez -- the only lefty in the Astros' bullpen -- was optioned to Triple-A Round Rock to open a roster spot for Altuve. Perez was 1-1 in three games.
Reds: Shortstop Jose Iglesias was activated off the three-day paternity list. Josh VanMeter was optioned to Triple-A Louisville. First baseman Joey Votto got a day of rest from the starting lineup, but he pinch hit in the ninth and took a called third strike.
Astros: Left-hander Framber Valdez (3-2) opens a series against the Yankees in New York. It'll be his third start of the season along with 14 relief appearances.
Reds: Tanner Roark (4-6) tries for his first win in June when the Reds open a series in Milwaukee. Roark is 0-3 in three June starts, allowing 12 runs -- 10 earned -- in 18 innings.
More AP MLB: https://apnews.com/MLB and https://twitter.com/AP-Sports
Brantley's 2-run blast gives Astros the lead
Michael Brantley lifts Tyler Mahle's pitch to right field and vaults the Astros to a 2-1 lead in the sixth inning.