ST. PETERSBURG, Fla. — Blake Snell lacked the sharpness he had in his previous start, but this time the Tampa Bay ace got the win over an opponent he idolized as a teenager.

Snell overcame occasional wildness to go six effective innings, and the Rays stopped an eight-game losing streak by beating Felix Hernandez and the Seattle Mariners 7-3 on Saturday.

"Obviously we needed a win," Tampa Bay manager Kevin Cash said. "We needed Blake to step up. We need that stopper."

Snell (8-3), who was born in Seattle, gave up two runs and seven hits. The 25-year-old left-hander walked two, recorded one strikeout, hit a batter and had two wild pitches.

"Off what I had today, I'd say it was good," Snell said. "Frustration with most (of my pitches). It's a tough lineup. When you don't have anything going and get through six, you've got to be happy with it."

Hernandez (6-5) allowed six runs and seven hits over three innings in his shortest start this season, a rematch of last Sunday's matchup against Snell and the Rays in Seattle.

"The life on the fastball (was) a little concerning today," Mariners manager Scott Servais said. "To be effective he's got to get up in the 89-90 range and today he didn't even get there. But it's not all about velocity, it's about locating it. That really wasn't on today either."

Hernandez gave up one run and five hits over eight innings in his victory last weekend. Snell struck out 12 over six scoreless innings and got a no-decision in that game.

"They put a lot of balls in play," Hernandez said. "There was a few mistakes. I don't have to make a lot of adjustments. I just have to pitch my game the way I pitched last week."

Nelson Cruz hit a fifth-inning homer and Kyle Seager had a pair of RBI grounders for Seattle, which lost for just the fifth time in 21 games.

Mallex Smith had an RBI triple — first called a homer and overturned after a video review — and Christian Arroyo hit a run-scoring single to put Tampa Bay up 6-1 in the third.

Smith scored from second during a three-run second when shortstop Jean Segura was charged with an error. Rob Refsynder's bloop single to left bounced off the turf and went off Segura's glove.

Chaz Roe, the second Rays reliever, went the final 1 1/3 innings for his first career save.

Snell had a career-opening stretch of not hitting a batter end at 56 starts when he hit Segura to load the bases with two outs in the second. Shortstop Daniel Robertson bailed out his teammate with a leaping catch on Mitch Haniger's liner.

Rays rookie Jake Bauers doubled in the first for his first major league hit after starting his career 0 for 8.

HIGHLIGHT PLAY

Rays RF Carlos Gomez made a sliding catch near the bullpen on Ryon Healy's foul ball in the seventh and was OK after first baseman Bauers collided with him. "It was very scary," Cash said. "They were both really fortunate to be OK. Jake has a little banged-up ribs and Carlos a shin, but what a tremendous play to make the catch."

MARINERS NUMBERS

It was just the eighth time in 389 starts that Hernandez went three or fewer innings. ... Seattle went 0 for 11 with runners in scoring position.

TRAINER'S ROOM

Mariners: 2B Dee Gordon, who was on the disabled list from May 22-31 with a fractured toe, got most of the game off before entering as a defensive replacement in the eighth. "The guy runs 23½ miles an hour and then wears a boot out of here every night," Servais said. ... RHP Hisashi Iwakuma (shoulder surgery) is throwing to hitters.

Rays: RHP Chris Archer (left abdominal strain) had a 22-pitch bullpen session and could return after a simulated game Tuesday. "Everything felt fine," Archer said.

UP NEXT

Mariners: LHP James Paxton (5-1, 2.95 ERA), who's unbeaten since the start of May, will start Sunday.

Rays: RHP Nathan Eovaldi (1-1, 3.27) makes his third start since returning from Tommy John surgery in August 2016.