At 62-48, they're 14 games over .500 for the first time since they finished the 1999 season at 96-67.
The Cubs fell out of contention long ago and once again couldn't get anything going against Arroyo (12-6) after pounding Milwaukee 15-3 on Wednesday.
The right-hander held them scoreless for the second time this season, striking out seven and walking one. He is 5-0 with a 1.88 ERA in his past six starts against them, including a win last month in which he went six innings.
Arthur Rhodes retired the side in the eighth.
Cordero came on in the ninth and walked Aramis Ramirez and Kosuke Fukudome before barehanding Blake DeWitt's high chopper and firing to first to end the game.
That gave Cordero 30 saves in 36 chances -- the fourth straight year and sixth time overall he's finished with 30 or more.
Gorzelanny settled down after a wild start and held the Reds to three runs and four hits over seven innings. He hit a batter and walked four -- all in the first three innings. But he also retired 12 straight before a one-out single in the seventh by Paul Janish, who scored from second on a base hit by Phillips that made it 3-0.
Hanigan supplied the big hit in the second after Jay Bruce's leadoff walk, lining an 0-1 pitch to the seats in left-center for his third homer.
Arroyo did not allow a hit until Ramirez singled to deep short with two outs in the fourth on a ball that bounced passed a sprawled out third baseman Scott Rolen.
Ramirez, who was slow to get out of the box, moved to second on a single by Marlon Byrd before Fukudome grounded into a force to end the threat.