Updated

The stage seemed set for another dramatic Arizona comeback. The go-ahead run was at third base with no outs in the eighth inning, and closer J.J. Putz was waiting to come in to mop up the victory.

Instead, the heart of the Diamondbacks order couldn't get Kelly Johnson home from third, then Putz surrendered a two-out home run to Orlando Cabrera in the ninth in the Cleveland Indians' 5-4 victory on Monday night.

"It stings, but they are a good ball club," Arizona manager Kirk Gibson said. "If you look at the way they played tonight, that is how they have been winning ball games. They used five pitchers tonight, they match up with you, they go through the line and they got the job done."

The Diamondbacks didn't in their third loss in a row, dropping them two games behind idle San Francisco in the NL West. The failure to bring home Johnson after he had tripled in the tying run was the most obvious of an evening of wasted opportunities.

"We just didn't get him in," Gibson said. "We have been struggling with runners in scoring position recently. We were 1 for 9 tonight. You have your 2, 3 and 4 hitter up and they navigated through us. They outexecuted us in that situation and we were in an ideal situation."

Orlando wasn't the only Cabrera to get a big hit. Asdrubal Cabrera hit a two-run homer off Ian Kennedy in the first. The Indians, who have their spring training facility in nearby Goodyear, knew the ball can sail out of the ballpark with ease in the desert night.

"That's expected, it's Arizona," Cleveland manager Manny Acta said. "Closed roof, open roof, it doesn't matter. So you better make pitches."

Orlando Cabrera just cleared the fence in left field after Arizona had tied it on Kelly Johnson's RBI triple in the eighth. Cabrera came on in a double-switch in the seventh inning, just in time to get his sixth hit in 12 at bats against Putz, who acknowledged the veteran always had hit him "very, very well."

"I hadn't thrown him any breaking balls throughout any of our matchups, really," Putz said, "and I tried to get ahead of one and missed off the plate. I tried to throw a quality one on the outside corner and, like I said, it kind of hung up there."

Lonnie Chisenhall, considered the Indians' top minor league prospect, doubled, then singled in a run in his major league debut.

Rafael Perez (3-1) struck out the only batter he faced in the eighth to get the victory. Chris Perez threw a scoreless ninth for his 19th save in 20 opportunities.

Ryan Roberts led off the Arizona ninth with a single and moved to second on Willie Bloomquist's sacrifice bunt. But Xavier Nady and pinch-hitter Melvin Mora popped out to send Arizona to its third straight loss.

Sixteen Diamondbacks had been retired in a row before Wily Mo Pena's pinch-hit single off Vinnie Pestano to start the eighth. Johnson failed twice to get down a sacrifice bunt, then after running the count to 3-2 he tripled off the swimming-pool fence in right field to bring home Pena and tie the game at 4.

Johnson didn't get any farther, though, when Stephen Drew popped out, Justin Upton was walked intentionally, then Chris Young and Miguel Montero struck out.

Kennedy, trying to go 9-2 for the season, went eight innings, allowing four runs on eight hits, striking out eight and walking one.

"I didn't have my best stuff tonight," he said, "and feel like I didn't pitch well enough to win tonight either."

NOTES: Drew has five triples this season and 51 for his career. ... The three-game series against Cleveland are the only home games in a span of 19 for Arizona leading up to the All-Star game, to be played in Phoenix on July 12. ... The Indians' Josh Tomlin and Arizona's Daniel Hudson both go for their 10th win on Tuesday night.