Johnson (4-0) issued three hits and struck out six while walking three. The rookie right-hander notched a win in his first start since Aug. 25.
Adam Jones went 4-for-4 with a two-run homer and Ryan Flaherty also went deep for the American League wild card-leading Orioles, who came into the game trailing the AL East-leading New York Yankees by one game.
Blue Jays starter Henderson Alvarez (9-14) absorbed the loss, surrendering four runs on eight hits over 5 2/3 innings.
Rajai Davis got the only RBI for Toronto, which dropped its seventh straight.