Brandon Moss hit a three-run homer, Yoenis Cespedes connected in the eighth and Josh Donaldson beat out an infield single in the fifth to drive in the go-ahead run.
Sonny Gray (1-0) allowed one earned run and six hits, struck out three and walked two in six innings. In the ninth, manager Bob Melvin went back to Johnson, who delivered his first save despite allowing two baserunners.
Johnson, who converted 50 of 59 save opportunities in 2013, was acquired from Baltimore to replace departed All-Star Grant Balfour.
Moss tied the game at 3 on a three-run homer in the third. Donaldson's third hit of the season snapped a career-worst 0-for-20 streak, and Jed Lowrie followed with a sacrifice fly.
Oakland won its first series at home against Seattle in four tries since sweeping the Mariners at the Coliseum to end the 2012 season.
Melvin lost a replay challenge in the fourth inning. Sam Fuld singled and started toward second and was caught off the bag. The crew confirmed its call in 2 minutes, 1 second.
Gray allowed a pair of unearned runs in the second after Michael Saunders reached on first baseman Daric Barton's fielding error.
After throwing six shutout innings in a 2-0 loss to Cleveland on opening night Monday, Gray followed that up with another strong start. The two runs ended his scoreless innings streak at 14 dating to his final regular-season start of 2013.
Erasmo Ramirez (1-1) struggled with his command after an impressive win in his season debut Tuesday at Los Angeles. He allowed seven hits and walked three in four innings.
Robinson Cano's third-inning double gave him a 14-game hitting streak against the AL West. He's now hitting .391 to start the season.
Cano and the Mariners now head to Safeco Field for the home opener against the Angels on Tuesday.