Morales, who played for the Mariners last season, came up with two outs and runners on first and second. He lined his double over center fielder James Jones' extended glove. Both runners scored without a throw.
Pino (1-2) worked five innings to earn the victory in his fifth big league appearance. Throwing 100 pitches, he allowed one run and seven hits, walked two and struck out four.
Glen Perkins worked the ninth to pick up his 22nd save in 25 opportunities.
After the game, Pino was optioned to Triple-A Rochester to make roster room for left-hander Kris Johnson, who was recalled to start Friday at Colorado.
Tom Wilhelmsen (1-2), who never had more than a three-inning outing in his career, made his first major league start after 191 relief appearances for the Mariners. He worked 2 2-3 innings, allowing two runs, one hit and three walks with three strikeouts.
Mariners manager Lloyd McClendon used six relievers to cover the nine innings after Taijuan Walker, who would have started, was sent down to Triple-A Tacoma to keep him in rotation during the All-Star break. The decision also allowed staff ace Felix Hernandez an extra day's rest to be available to start Friday against AL West-leading Oakland A's.
McClendon's thinking was also backed by the fact that over the previous 18 games his bullpen had a 0.77 ERA with 63 strikeouts.
Wilhelmsen had little trouble through the first two innings, throwing just 27 pitches. But he labored in the third, issuing a one-out walk to Sam Fuld before Brian Dozier singled.
With Kurt Suzuki at the plate, the runners pulled off a successful double steal. But catcher Mike Zunino's throw to third sailed into left field allowing Fuld to score and Dozier to reach third. Dozier scored on Kurt Suzuki's sacrifice fly to center.
Kyle Seager, heading to the All-Star game on Tuesday, had given the Mariners a 1-0 lead with his 14th home run in the second inning. Seager has a team-leading 60 RBIs. He is hitting .352 in 45 games at Safeco Field this season.
Pino survived two bases-loaded, two-out threats. In the third with a 3-2 count on Corey Hart, he threw a 79 mph changeup that Hart chased to end it.
In the fifth, once again Hart came up with the bases loaded and Pino induced him to ground out weakly to first.
That continued a poor offensive trend for the Mariners. They are just 2 for 33 with runners in scoring position over the past seven games.
Seattle reliever Danny Farquhar left with two outs in the fifth after Suzuki and Chris Parmelee singled. Joe Beimel entered and was greeted by Morales' double that made it 4-1.
In the seventh, the Mariners loaded the bases again, with one out. Endy Chavez and James Jones, who had three hits, singled. Robinson Cano, who had three hits, lined to second baseman Dozier but the ball bounced out of his glove. It was ruled a hit.
Seager followed with a sacrifice fly to left, scoring Chavez but after a video review Jones was ruled out trying to advance to third.
NOTES: Colorado 1B Justin Morneau, who played 11 seasons for the Twins before being traded to Pittsburgh last August, will be part of the All-Star game festivities next week in Minneapolis. He was selected to compete in the Home Run Derby, which he won in 2008. ... Johnson threw 4 1-3 shutout innings in his only major league start this season, allowing four hits and six walks while striking out five May 1 against the Los Angeles Dodgers in the second game of a doubleheader. He has made 16 starts for Rochester, going 8-4 with a 2.75 ERA. ... Wilhelmsen's start after 191 appearances is the third-most in club history behind Luis DeLeon (206) and Dwayne Henry (225). . Cano is hitting .484 over his last 16 games against the Twins. . Michael Saunders of the Mariners held his side after checking his swing in the eighth. He was replaced by Dustin Ackley.