The D-backs cut the lead in half in the fourth when Martin Prado led off with a double, moved to third on Eric Chavez's groundout and scored when Mark Trumbo grounded out to third.
The Mariners increased their lead to 3-1 in the fifth when Brad Miller led off with a triple and came home on Stefen Romero's groundout.
D-backs starter Patrick Corbin, who will pitch the season opener March 22 against the Dodgers in Sydney, allowed three runs on six hits over five innings.
"I felt like after the second, I was locating my fastball a lot better," Corbin said.
Mariners starter James Paxton held the D-backs to one run on five hits over four innings.
"I got myself in situations that were good for me to get into and get out of," said Paxton, who said he had trouble locating his fastball. "You have to be able to learn to pitch without your best stuff. You're going to go out there without your best stuff most of the time. That's what it's all about, being able to battle through games and help your team win."
The D-backs rallied in the fifth off reliever James Gillheeney.
Gerardo Parra led off with a single, moved to third on A.J. Pollock's one-out double and scored on when Zunino was charged with a passed ball.
Pollock came home later in the inning on a sacrifice fly by Paul Goldschmidt, tying the game at 3-3.
Up next: The D-backs play host to the Indians on Tuesday at 1:10 p.m. MST at Salt River Fields, live on MLB.TV. Trevor Cahill, who struggled a bit in his last outing, will get the start for Arizona against Justin Masterson. Reliever J.J. Putz, who has been working on some mechanical changes, is also scheduled to throw.