Porcello (13-8) allowed just one run on five hits and a pair of walks en route to the victory.
Joaquin Benoit tossed a scoreless ninth for his 21st save as the American League Central-leading Tigers reduced their magic number for a division crown to eight.
The game was tied 1-1 in the sixth when Miguel Cabrera drew a two-out walk from Mariners starter Joe Saunders and Prince Fielder, Victor Martinez and Omar Infante followed with consecutive singles for a 3-1 lead.
Torii Hunter added an RBI in the next inning to cap the scoring.
Saunders (11-15) ended up allowing three runs on seven hits over 5 2/3 innings as Seattle dropped the opener of a four-game series.
Abraham Almonte went 2-for-4 with a homer and Justin Smoak also drove in a run for the M's.
Theater accidentally screens 'Nymphomaniac' trailer instead of Disney's 'Frozen'
Exploding whale video goes viral on Internet