"We weren't in a do-or-die part of the season, but needed to get this thing rolling," Elarton said of the Indians' longest streak since winning 10 in a row in April 2002.
The Indians have won 11 of 12 and are 19-7 since May 21.
"They've got some things going their way," Arizona's Brandon Webb said.
Webb (7-3) pitched his third career complete game, but fell to 1-3 in five starts since May 26.
Elarton had not pitched since June 8, and fell behind 1-0 in a 24-pitch first inning. He then shut down the Diamondbacks until leaving with one out and one on in the seventh.
"I didn't really have command of my fastball until the fourth inning, but for some reason my offspeed pitches were working and got me through it," he said. "I definitely was rusty for three innings."
The right-hander had expressed disappointment Thursday after being moved back a few days in the rotation when Kevin Millwood came off the disabled list Wednesday night.
"I don't really consider myself a fifth starter, but I understand their thought process," he said. "Still, I want to get the ball and contribute."
He gave up only one run and six hits over 6 1/3 innings, walking two with three strikeouts to improve to 4-0 with a 2.47 ERA in six starts since May 17.
"I try not to look at numbers and just go out and do my job," Elarton said.
Cleveland's relievers have a major league-best 2.52 ERA.
"Their bullpen leads the league," Arizona manager Bob Melvin said. "When it gets to the seventh inning, you know you are going to face those guys."
Hafner hit the first pitch from Webb in the bottom of the second into the Cleveland bullpen in center field for his ninth homer to tie it at 1.
"I had good command of most of my pitches and was trying to get ahead in the count, but he was aggressive and jumped on the first pitch," Webb said.
Cleveland went ahead in the fifth after Casey Blake made a fine defensive play to end the top of the inning.
"That was one of the best plays I've ever seen going over the tarp," Cleveland manager Eric Wedge said.
Blake got a standing ovation after diving over the rolled up tarp and into the stands down the left-field line to snare a foul ball hit by Troy Glaus. Blake, who was Cleveland's regular third baseman for two years before being switched to the outfield this season, was back at his old position for the first time in 2005 as Aaron Boone got a day off.
"I just decided to go for it," Blake said. "Fortunately, the fans got out of the way and gave me a chance."
Blake then beat out a slow roller for a single to start the Indians' two-run fifth.
Webb gave up five hits over eight innings, walking three and striking out six.
- Cleveland is 12-2 in interleague play and has outscored NL teams 83-38 this year.
- Former hockey superstar Wayne Gretzky threw a strike when he tossed out the ceremonial first pitch.
- Sizemore is batting .474 (27-for-57) with 11 RBI in his last 13 games.
- Glaus went 1-for-4 and is hitting .400 (8-for-20) over the first five games of the Diamondbacks' 10-game trip.
- Before the game, Arizona put RHP Russ Ortiz on the 15-day disabled list with a strained right rib cage. Ortiz had made 226 consecutive starts since 1998.