TJ Friedl and rookie Matt McLain each had two hits and scored two runs as Cincinnati won for the fourth time in six games. Tyler Stephenson also had two hits.
Buck Farmer (1-3) got five outs for the win, and Alexis Díaz worked a shaky ninth for his 11th save. Farmer, Ian Gibaut, Alex Young and Díaz combined for 4 2/3 innings of one-run ball in relief of Brandon Williamson.
Dansby Swanson and Ian Happ each had two RBIs for Chicago, which blew a 4-1 lead. Jameson Taillon was charged with four runs and six hits in 4 2/3 innings in a no-decision.
The Cubs have lost three in a row and 10 of 13 overall to fall seven games below .500 at 22-29. They put runners on second and third with two out in the ninth, but Díaz struck out Happ for the final out.
Swanson's two-run single with two out in the second lifted the Cubs to a 4-1 lead. But India singled in Friedl in the third, and the Reds added three more runs with two out in the fifth.
McLain chased Taillon with an RBI single, and India greeted Michael Fulmer (0-4) with a two-run shot to right for a 5-4 lead.
Casali hit a run-scoring single for the Reds in the sixth, and India connected for another two-run homer in the seventh against Jeremiah Estrada. India matched a career best with five RBIs.
Williamson was charged with four runs and six hits in 4 1/3 innings in his third major league start.
Reds right-hander Silvino Bracho cleared waivers and was outrighted to Triple-A Louisville.
Cubs: RF Seiya Suzuki, 3B Patrick Wisdom and C Yan Gomes returned to the lineup after scheduled days off Friday.
LHP Drew Smyly (5-1, 2.93 ERA) starts Sunday for the Cubs against Reds RHP Graham Ashcraft (2-3, 5.57 ERA).