It's the M's first three-game sweep in Kansas City since May of 2007.
After winning 10 straight to move into first place in the AL Central, the Royals have dropped four in a row, three of them by 2-1 scores.
Elias (7-5), a 25-year-old left-hander from Cuba, limited the Royals to one run and five singles over 6 2-3 innings. He struck out five, walked two and improved to 4-1 in June.
Zunino hit his ninth home run, tops among AL catchers. He connected off Yordano Ventura (5-6) leading off the seventh to break a 1-all tie.
Zunino led off the fifth with a double and scored when Port Orchard native Willie Bloomquist hit a two-out double.
Fernando Rodney, pitching for the fourth straight day, earned his 21st save in 23 chances.
Rodney got saves in all three games at Kansas City. He last worked in four consecutive games on May 27-30, 2013, for Tampa Bay.
Ventura (5-6) had won his previous three starts.
The Royals scored their run in the second, which Alex Gordon and Salvador Perez opened with singles. Justin Maxwell's sacrifice fly brought home Gordon.
Royals shortstop Alcides Escobar left in the seventh with a bruised left shin. He was hit in the second by a pitch. X-rays were negative.
The Mariners won a challenge in the seventh when Pedro Ciriaco was ruled safe at first for a bunt single. After a reliever that took over 3 minutes, the call was overturned and Ciriaco was out.
NOTES: Royals 3B Danny Valencia, who missed 19 games with a muscle strain in his left hand, was activated from the disabled list. The Royals optioned RHP Louis Coleman to Triple-A Omaha as they opted to go with a 12-man staff. ... Mariners ace RHP Felix Hernandez, who starts Monday against Boston, is 4-1 with a 1.33 ERA in his past seven starts. The lone loss was 1-0 on June 18 at Texas when he allowed three hits, walked none and struck out 10.