Pirates starter JT Brubaker (0-3) allowed two runs and four hits in five innings.
Cam Alldred, a 25-year-old left-hander, made his MLB debut in the sixth. Alldred, who potched for the University of Cincinnati from 2016-18, retired Mike Moustakas on a popout, threw a called third strike past Tyler Stephenson and retired Colin Moran on a groundout.
Alldred gave up a leadoff single in the seventh to Tyler Naquin, then was replaced by Heath Hembree.
Stephenson hit a second-inning single that drove in Moustakas, who led off with a double, and hit a 401-foot home run into the left field bleachers in the fourth. Stephenson had three hits, raising hits, raising his batting average to .349.
Moran and Naquin hit RBI singles in the eighth off Duane Underwood Jr., who was activated from the 10-day injured list following a right hamstring strain that had sidelined him since April 8.
Pirates: Claimed RHP Tyler Beede off waivers from San Francisco, recalled INF Rodolfo Castro from Triple-A Indianapolis, optioned INF Cole Tucker and RHP Max Kranick to Triple-A and designated RHP Beau Sulser for assignment.
Reds: Selected the contract of RHP Robert Dugger from Triple-A Louisville, recalled RHP Jared Solomon from Louisville, optioned RHP Dauri Moreta to Triple-A and assigned LHP Phillip Diehl outright to Louisville.
Reds: RHP Lucas Sims (back spasms) was placed on the 15-day injured list, retroactive to Wednesday.
Pirates: OF Jake Marisnick had left thumb surgery and will miss four to six weeks.
Reds at Pirates, 6:35 p.m., Bally Sports Ohio, 700, 1410