Seattle overcame an early two-run deficit and took a two-run lead into the bottom of the eighth before Nick Green forged a 5-5 tie with a two-run double.
Chris Woodward moved the runners up with a sacrifice and Johnson doubled them both home. He had also driven in a run in the fourth with a double.
Mark Lowe entered the game for Seattle in the bottom of the 11th and gave up a two-out, solo homer to George Kottaras, his first in the majors. J.D. Drew followed with a single but Lowe got Dustin Pedroia on a fielder's choice grounder and earned his first save.
The win went to Chris Jakubauskas (5-5), who pitched the ninth and 10th innings.