The Blue Jays scored two runs off Benson with the aid of wild pitches, then added two unearned runs in the seventh against Todd Williams before Wells doubled in a ninth-inning run.
Janssen (5-3) gave up six hits, walked none and struck out five. The rookie allowed seven runs in 10 innings in losing twice previously to Benson and the Orioles, but this time he got the best of them in improving to 4-0 in his last five starts.
"I looked at what I did in the two previous starts," Janssen said. "I threw the first start out because it was my first (career) start, second one I looked at what I did and went out there and attacked them."
Ryan, the sixth Toronto pitcher, worked the ninth for his 15th save. It was his third save against the Orioles, the second in two nights.
But it's hard to imagine the left-hander was ever involved in a finish like this one.
Baltimore put runners on second and third with one in the ninth before Ramon Hernandez hit a popup that shortstop Aaron Hill caught in short left field. Melvin Mora tagged up and was easily thrown out at the plate to complete the game-ending double play.
"I'm sure he felt like he had the shortstop going away from him pretty well," manager Sam Perlozzo said. "Basically, that run means nothing to us. I think he misread the ball and thought he had an easy score."
"I'm thinking to score. I'm thinking he's going to dive for the ball, the shortstop, and Im going to score," Mora said. "When he goes to get the ball, he's going to be out of balance.
"I just saw that he went back and the left fielder never come in on the ball. I said I don't think he's going to throw me out from that far."
Mora guessed wrong, and a dreadful night for the Orioles ended with Kevin Millar waiting in the on-deck circle for an at-bat that never came.
"We'll have to live with it," Perlozzo said.
Benson (6-5) allowed two runs and five hits in six innings. He struck out four and walked two.
Brian Roberts went 3-for-4 with a sacrifice fly for the Orioles. He started the game mired in an 0-for-19 slump.
Baltimore trailed 4-1 before Miguel Tejada singled in a run with two outs in the seventh. A walk to Hernandez loaded the bases, and Millar drew a walk in a 10-pitch at-bat against Justin Speier to force in a run and get the Orioles within a run.
Benson struggled with his control early, and the Blue Jays took advantage in grabbing a 2-0 lead.
Toronto used a hit batter, a single and a walk to load the bases in the second inning before Shea Hillenbrand scored on a wild pitch. In the third, Wells hit a leadoff single, stole second, went to third on a wild pitch and scored on Lyle Overbay's groundout to first.
The Orioles got a third-inning run when Brandon Fahey hit a leadoff double and scored on a flyball by Roberts. But that would be the extent of Baltimore's offense against Janssen.
"He hung in there, he hung tough," Toronto manager John Gibbons said. "He's ahead of his experience level. He's just getting better."
Toronto added to the margin in the seventh. A throwing error by Mora at third put runners on second and third for Frank Catalanotto, who hit an RBI single to right before Troy Glaus drove in a run with a grounder.
- Wells' four hits tied a career high.
- Roberts went 1-for-2 in stolen base attempts and is 14-for-16 this season.
- Catalanotto and Bengie Molina extended their hitting streaks to a season-high nine games, but Alex Rios went 0-for-5, ending his eight-game run.
- Toronto needs a win Thursday to win its fifth straight series.
- Tejada has hit in 10 straight games.