Coghlan lined a double to left past a diving Kristopher Negron, and Castro followed with a single into the gap in left-center off a 1-1 pitch from Burke Badenhop for the Cubs' eighth walk-off win, most in the Major Leagues.
"It's getting to be our signature -- never giving up, never quitting," Chicago catcher David Ross said. "It's easy to sleep at night when you do that."
It was Castro's third walk-off hit this season and second straight -- he delivered a game-winning RBI single in the ninth inning Saturday night.
"He's started to get his mojo back, which is good for us," Cubs manager Joe Maddon said of Castro, who went 3-for-5 in the game.
The Reds took a 1-0 lead in the fifth on Brandon Phillips' RBI single, driving in Billy Hamilton, who had doubled and stolen third, the third of his career-high five stolen bases in the game. The Cubs then tied the game in the seventh on Dexter Fowler's sacrifice fly, scoring Ross, who had doubled and moved up on a sacrifice.
"It just didn't happen," the Reds' Todd Frazier said. "We had a lot of energy, guys working their tails off. One guy stepped up. There's nothing you can really do."
MOMENTS THAT MATTERED Lefty gets right: After not being able to get through the sixth inning in his last two outings, Jon Lester went seven on Sunday and picked up his eighth quality start. He held the Reds to five hits, did not walk anyone, and struck out four but did not get a decision. The lefty also was 0-for-2 at the plate, and dropped to 0-for-63 in his career, the longest hitless streak by an active Major League pitcher.
"Tonight was better. Tonight was back to being me," Lester said. "Any time you have two starts like I did [before Sunday], you're going to have some mental questions, you're going to have some doubts and sit there going, 'What am I doing wrong?' You have to believe in what you've done, and what I've done in the past, and what's gotten me here."
Hamilton swipes: Hamilton continued his tear on the basepaths, swiping five for a Major League-leading 31 stolen bases. He stole second and third in the third inning, and then swiped third in the sixth. Those three came while Lester was on the mound. In the 10th, Hamilton set his single-game career high when he stole second and third. His five steals in the game not only tied a club record, but put him at 100 in his three-year career. Hamilton is the first player with five steals in a game since Boston's Jacoby Ellsbury did so against the Phillies on May 30, 2013.
"He was sensational," said Reds manager Bryan Price. "It's kind of a testament to Billy, really, because I thought they put in a great effort to control him there, and he was still able to do his thing."
Said Lester: "He out-runs a baseball. I haven't seen many guys do that." More >
DeSclafani impresses: Reds starter Anthony DeSclafani had already seen the Cubs twice this season, and he looked prepared on Sunday. DeSclafani kept the Cubs at bay for 6 1/3 innings, allowing one earned run on six hits while striking out five. His only run came on a sac fly from Cubs center fielder Fowler to score Ross.
He pitched great," Price said. "He's a tough kid. If he doesn't walk [Addison Russell], he faces Fowler and he's still in that ballgame. He pitched his tail off. It was a tough one to lose, two starters that gave both teams a chance."
DeSclafani has allowed two earned runs to Chicago in 18 1/3 innings this season.
SOUND SMART WITH YOUR FRIENDS • The Reds' Joey Votto has reached base in 23 consecutive games after he doubled to left field in the sixth. Votto has posted a .424 on-base percentage in that span and has reached base in 53 of his 60 appearances this season.
• According to Elias, Castro is the first Cubs player with a walk-off RBI in back-to-back games since Hall of Famer Ron Santo did so in 1966.
REPLAY REVIEWS In the Reds' sixth, Phillips tried to score from first on Votto's double to left and was originally called safe by home-plate umpire Toby Basner. But the Cubs challenged the call, saying Ross had made the tag, and after a review, the call was overturned and Phillips was out. The Cubs' relay was Coghlan to Castro to Ross.
With one out in the Cubs' sixth, Coghlan hit what he thought was a double down the right-field line. First-base umpire Ron Kulpa ruled the ball was foul, but the Cubs challenged that call and after a review, the call was overturned.
Price called for a challenge of his own in the bottom of the seventh after Basner ruled the Cubs' Anthony Rizzo had been hit by a pitch. Rizzo was sent back to bat after a review overturned the call on the field.
WHAT'S NEXT Reds:Jon Moscot makes his third career start when the Reds travel to Detroit on Monday for the first game of an Interleague series. Moscot will be tested by a Tigers offense that is averaging 5.4 runs a game in its last seven games. First pitch is slated for 7:08 p.m. ET.
Cubs: The Cubs open a four-game stretch of home-and-road Interleague action against the Indians on Monday. Jake Arrieta gets the start in the first game at Wrigley Field. The right-hander has not faced the Indians since June 29, 2012, and he is 1-0 with a 9.20 ERA in three career starts. First pitch is scheduled for 7:05 p.m. CT.