SEATTLE -- Horacio Ramirez pitched the first three innings with runners constantly on base and in scoring position.
Jose Lopez homered for the second straight day for Seattle, who overcame Ramirez's rocky start and shaky relief pitching by Chris Reitsma.
Ramirez gave up six runs in four innings in his last start against the Los Angeles Angels, and learned his lesson.
"Last start I jumped ship on my game plan. Today I finished up with it and good things happened," Ramirez said. "I kind of got mad at myself my last start. I got a little out of whack and didn't stick with my game plan. Today I was tested early and I learned from my last start."
Ramirez gave up five hits and allowed seven baserunners in the first three innings. The Royals loaded the bases with one out in the first inning and failed to score.
Ramirez (2-1) allowed one run and seven hits in 6 1/3 innings. He struck out four and walked two.
David DeJesus scored on Mark Grudzielanek's groundout in the seventh to end the Royals' 21-inning scoreless streak and cut Seattle's lead to 2-1.
The Mariners responded with three runs in the bottom half. Kenji Johjima led off with his second homer of the season. Lopez reached on an infield single and advanced to second on Alex Gordon's throwing error.
Ichiro Suzuki was intentionally walked, ending the night for Kansas City starter Jorge De La Rosa. Ryan Braun entered and threw his second pitch to the backstop, allowing the runners to advance. Adrian Beltre then lined a two-run single past the drawn-in infield to make it 5-1.
Pinch-hitter Ross Gload hit a three-run homer off Reitsma in the eighth but Beltre and Lopez had two-out RBI singles in the bottom half to extend the Mariners' lead to 7-4.
"The first swing I got loose," Gload said. "It's a good day or a bad day real quick if you get one shot at it, so 0-2 I was just trying to put the ball in play, hit something hard and got lucky."
J.J. Putz got five outs for the second straight day, picking up his third save in three chances, but Seattle manager Mike Hargrove said don't look for Putz to enter in the eighth on a regular basis.
"If we do that too often, he won't be the J.J. Putz we know at the end of the season in August and September. He'll be worn out," Hargrove said. "We've got to find somebody that can get us to the ninth and give J.J. just three outs."
De La Rosa (2-2) gave up eight hits and a season-high five runs. He allowed no earned runs in eight innings in his previous start against the Twins.
Lopez lined De La Rosa's 1-0 fastball into the Royals' bullpen in left field with one out in the fifth. Lopez hit a two-run homer Thursday in the Mariners' 4-2 win over Oakland. It was the first time that Lopez, in his fourth season in the majors, had homered on consecutive days.
Seattle announced before the game that LHP Arthur Rhodes will have Tommy John surgery for a torn ligament in his left elbow and miss the entire season. ... The Royals' previous runs came in the fifth inning on Wednesday against Minnesota on a two-run homer by DeJesus.