Stubbs made the dazzling catch to limit the damage in the first inning and homered in the sixth before Mark Reynolds' seventh homer of the season put Cleveland on top in a 5-4 win over the Houston Astros.
The drive by Reynolds, who also homered in Cleveland's 19-6 win Saturday, helped the Indians take two of three in the series.
Jose Altuve drew a leadoff walk before Fernando Martinez, who came off the disabled list on Saturday, connected on his first pitch of the season for a solo homer that made it 2-0. The shot broke a streak of 14 2/3 scoreless innings against the Astros for Indians starter Ubaldo Jimenez.
Jason Castro singled before Stubbs made the nifty over-the-shoulder catch while sprinting near the wall right-center and the Indians made it a double play when Castro couldn't beat the throw back to first.
"It started out a little rocky. That second hit of the game hits that short porch and then in my opinion Drew Stubbs saved the game two hitters later," Francona said. "They've got a runner on first and they've got a ball that's going to hit the wall and be a triple. And Drew catches it and we double the guy off, and in my opinion that gave us a chance to win the ballgame."
Stubbs, who played here often when he was with Cincinnati, wasn't sure if he'd be able to get to it when it was hit.
"You never know," he said. "With the big outfield there, balls that are ordinarily home runs in a lot of parks are able to get tracked down. So I knew I had a chance at it, and luckily was able to get a good jump. That play was a turning point for the game."
Added Jimenez of the catch: "That was unbelievable. It gave me a break and helped me out to get to the second inning and keep it going."
The Astros dropped to 5-13 with the loss, which is the worst record in the American League, and their worst start through the first 18 games since posting the same record in 1983.
The game was tied at 4 in the seventh inning before the two-out full-count homer to left-center by Reynolds off Hector Ambriz (0-1). Martinez hit a two-run homer in the first inning for Houston in his 2013 debut.
The Astros had a great opportunity in the ninth when Rick Ankiel led off with a first-pitch double to center field before Perez plunked Matt Dominguez on the elbow. He was replaced by pinch runner Brandon Barnes.
A sacrifice bunt by Marwin Gonzalez advanced the runners before Cleveland intentionally walked Altuve to load the bases. But Perez worked out of the jam by striking out Chris Carter before Castro grounded out to end the game.
"In that situation there, you at least think you are going to tie the game, so it was unfortunate that we didn't put together at bats that warranted us tying the game, and we didn't get it done," Houston manager Bo Porter said.
The Astros hit back-to-back singles off Joe Smith with no outs in the seventh, but he retired the next three batters to end the threat.
Gomes got Cleveland within 2-1 in the second with his solo homer off Houston starter Erik Bedard which bounced high on the wall above the Crawford Boxes in left field. Gomes added a triple in the fourth.
Santana doubled with one out in the third before a two-out walk by Reynolds. Ryan Raburn tied it at 2-2 when his RBI single rolled just out of reach of a diving Altuve and into the outfield.
Brett Oberholtzer made his major league debut when he replaced Bedard for the fifth inning. Santana led off that inning with a homer to left field to put Cleveland up 3-2.
Stubbs added his first home run of the season off Oberholtzer with one out in the sixth inning to push the lead to 4-2. It sailed just out of reach of a leaping Ankiel and hit a tub of popcorn of a fan in the front row in right field, sending popcorn raining down on Ankiel.
Jimenez retired the next 13 batters after the double play in the first inning. Houston didn't get another baserunner until Marwin Gonzalez singled to start Houston's sixth. Altuve followed with a triple which bounced off the right fielder Raburn's glove just short of the wall in right field to cut the lead to 4-3 and chase Jimenez.
He was replaced by Nick Hagadone before pinch hitter Carter tied it with a sacrifice fly to right field.
Hagadone issued consecutive one-out walks and was replaced by Allen who retired Justin Maxwell to limit the damage.
Jimenez yielded four hits and four runs in five-plus innings. He has allowed 18 runs in his last three starts.
Bedard allowed six hits and two runs with a season-high eight strikeouts in four innings. It was his first start since allowed six runs in 1/3 inning of an 11-2 loss at Oakland.
Cleveland's Justin Masterson faces Chicago's Dylan Axelrod when the Indians and White Sox open a three-game series Monday. ... Houston's Brad Peacock takes on Seattle's Felix Hernandez in the opener of a three-game series on Monday. ... The Indians placed starter Brett Myers on the 15-day disabled list with inflammation in his right elbow Sunday. They selected the contract of RHP Fernando Nieve from Triple-A Columbus to take his roster spot. ... Houston recalled Oberholtzer from Triple-A Oklahoma and optioned LHP Dallas Keuchel there before the game. ... Cleveland shortstop Asdrubal Cabrera was out of the lineup on Sunday after bruising his left wrist in a fall down the steps on the way to the dugout on Saturday. Francona said he is OK and that he could play Monday. His teammates mocked his spill on Sunday morning by making a tape outline of a body with Cabrera's No. 13 on it on the stairs where he fell. Cabrera took it in stride, laughing and taking pictures of their handiwork.