BALTIMORE -- First, Russ Adams failed to execute a suicide squeeze. Then, hoping merely to avoid hitting into a double play, he tapped a 15-foot roller that produced the only run Josh Towers needed in his finest pitching performance in the major leagues.
Towers (3-1) walked one, struck out two and did not permit a runner past first base in improving to 4-2 against his former team.
"I don't think I've thrown a better game than that," Towers said. "It's just sweet doing it against Baltimore because they're the best hitting team in baseball."
Miguel Batista worked a perfect ninth to earn his eighth save.
The game's first scoring threat came in the Toronto eighth, when Eric Hinske drew a leadoff walk and Gregg Zaun followed by drawing a walk on a 3-2 pitch. Alex Rios followed with a slow grounder to short that resulted in a putout at second base, leaving runners at the corners.
Adams then fouled off a pitch on a suicide squeeze before taking a protective swing at a 2-2 pitch, pushing a dribbler down the first base line. By the time Orioles starter Daniel Cabrera reached the ball, he was too late to nail Hinske at home and was unable to throw out Adams at first base.
"I was just trying to battle, just trying to get something in play and stay out of the double play," Adams said.
"He crushed it, didn't he?" Towers said with a grin. "In the box score, it looks like a line drive to the gap."
It proved to be enough to give the Blue Jays their seventh win in eight games, leaving them two games behind first-place Baltimore in the AL East.
Towers threw only 92 pitches in his longest outing of the season.
"Location is the most important thing," he said. "If I throw the ball where I want to -- on the corners -- and keep it out of the middle of the plate, I'm going to have some success."
Pitching on 10 days rest after a rainout in Boston washed out his previous scheduled start, Cabrera (1-2) gave up one run and four hits in eight innings. He walked four and had a career-high eight strikeouts.
"He gave us everything. He pitched a great game," Orioles manager Lee Mazzilli said. "He pitched good enough to win."
Not on this night, however, because Towers was even better.
"He was spotting the ball really well, keeping the ball down," Baltimore's Javy Lopez said. "He moved the ball almost every pitch. That's what made him successful tonight."
The Orioles have lost two in a row to Toronto, managing only two runs in 21 innings after scoring 62 runs during an eight-game winning streak. Baltimore has just three hits in its last 15 innings, all of them singles.
"You have to expect something like that. This game has its ups and downs," Lopez said.
There were precious few baserunners in the first seven innings, and those that did reach didn't get past first base. Baltimore's Brian Roberts set the tone by getting a leadoff single in the first -- and then getting picked off.
"We have a tough lineup," Lopez said, "but there's always somebody who can stop you from scoring runs. Unfortunately, the other team's pitcher did better."
Toronto got three hits and two walks through the first six innings, but two of the runners were caught stealing and a third got wiped out on a double play.
- Toronto's Vernon Wells went 0-for-4, and is 4-for-22 on the road trip and 0-for-8 lifetime against Cabrera.
- It was only the third time in 20 games that Baltimore did not hit a home run.
- Roberts has at least one hit in 23 of 26 games this season.