Jesse Hahn (2-1) struck out seven and allowed an unearned run on five hits and two walks for San Diego, which has won two straight on the heels of a 1-8 stretch.
Huston Street tossed a scoreless ninth to notch his 20th save of the season.
Mariners starter Erasmo Ramirez scattered two hits and walked a pair over six scoreless frames for the Mariners, who lost the final two games of the series after winning the first two.
The Mariners led 1-0 before the Padres surged ahead with their four-run seventh.
Dominic Leone (2-1) entered for Ramirez and back-to-back one-out triples into right-center by Tommy Medica and Cameron Maybin tied the score. Pinch-hitter Carlos Quentin worked a walk and he was replaced on the bases by Jace Peterson.
Denorfia ripped a hanging slider into center to bring home Maybin to put the Padres in front. Joe Beimel came on for Leone and Will Venable grounded out to move Peterson and Denorfia up a base and they both scored on Everth Cabrera's single to make it a 4-1 game.
Robinson Cano's two-out RBI single in the fifth opened the scoring for Seattle.