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.
Mathematician offers formula for finding the perfect Christmas tree
Twerking Brooklyn burglar 'dropped it like it was hot' prior to theft