Orioles manager Lee Mazzilli said pitching coach Ray Miller instituted a new windup for Cabrera before his last start June 27 against the New York Yankees, then worked with the 6-foot-7 right-hander on the improved delivery twice between starts.
"It hides the ball a little more," Mazzilli said. "It seemed like he was flying out and the ball was never catching up to his body."
The new mechanics helped Cabrera (6-7), who had been 0-3 in his last four starts, win for the first time since June 5 at Detroit. He walked two and struck out five, becoming the first Orioles starter to record a victory since Rodrigo Lopez on June 21.
"I feel better. I feel I better control my pitches," Cabrera said. "I feel more strong."
Tim Byrdak pitched the eighth and B.J. Ryan worked the ninth, finishing the Orioles' fifth shutout of the season.
Rafael Palmeiro went 0-for-3 and remained eight hits shy of 3,000 for his career. Palmeiro is trying to join Hank Aaron, Willie Mays and Eddie Murray as the only players in major league history with 3,000 hits and 500 home runs.
The Indians lost for just the seventh time in 25 games.
The Orioles, who had lost eight of nine, stole a season-high five bases. In their previous 55 games, they had only 16 steals.
"We just didn't do a very good job of controlling the running game and that's just something that kind of dominoed on us today," Indians manager Eric Wedge.
Tejada drew a one-out walk and stole second with Palmeiro batting. When Palmeiro walked on a 3-2 pitch, Tejada swiped third, then came home when second baseman Ronnie Belliard mishandled Eli Marrero's grounder for a run-scoring error.
"He's not a guy who gets on and runs all the time," Mazzilli said of Tejada. "But he's a guy who tries to do something to pick the team up."
Gibbons followed by hitting his first pitch from Millwood over the center-field fence for a three-run shot - the Orioles' only hit of the inning -- and a 4-0 lead.
"As well as Daniel pitched, it would have been a crime not to get the 'W' today," Gibbons said.
Millwood, who had won two of three June decisions, allowed four runs - three earned - and three hits in six innings. He walked five and struck out three.
"I really didn't feel like I pitched all that well the whole game." Millwood said. "I walked like five guys, and when you walk that many people against an offense like these guys have, you're going to have a hard time winning."
- Baltimore purchased Byrdak's contract from Triple-A Ottawa on Saturday and designated RHP Rick Bauer for assignment to clear a spot on the 40-man roster.
- C Victor Martinez singled in the first, extending his hitting streak to 13 games, the longest by an Indians player this season.
- Cleveland 3B Casey Blake, who was scratched from Friday's lineup with a stiff neck, started Saturday but left in the second inning with the same injury. He was replaced by Aaron Boone.