Arroyo (1-0) gave up three hits and all the runs -- which scored on a home run by Matt Holliday -- in the sixth but Cincinnati was up 4-0 before that.
The first four Reds runs came off Cardinals starter Adam Wainwright (0-3), who has given up 15 runs over 13 2/3 innings this season. Wainwright allowed seven hits and walked one while striking out five in a five-inning outing Thursday.
Arroyo didn't walk a batter and struck out five before giving way to closer Sean Marshall, who allowed a base hit but struck out three while getting his second save.
Holliday pulled the Cardinals within 4-3 but Cincinnati's Drew Stubbs hit his first home run of the season in the seventh and Joey Votto had a two-out single in the ninth for the final run.