Heilman, who is in the mix for the No. 5 spot in the rotation, tossed three innings and retired every batter he faced, two by strikeout, and has thrown five scoreless innings this spring.
The D-backs took a 2-0 lead when Justin Upton led off the fourth with a double and Juan Miranda followed with an opposite-field homer to left, his first of the spring. Both the runs came off reliever Yoervis Medina.
One inning later, Upton's double off the wall in right-center scored Willie Bloomquist to give Arizona a 3-0 lead.
The Mariners cut the lead to 3-2 in the eighth inning on Matt Tuiasosopo's two-run single through the hole at short. But Paul Goldschmidt got them back for Arizona with a two-run single in the bottom of the frame.
Michael Pineda, who is battling for a spot in the Seattle rotation, started and was impressive in his two innings of work. The right-hander did not allow a hit and struck out one.
Up next for Mariners: Left-hander Luke French, along with Pineda in the pool to land a job in the back end of the rotation, will get his second audition against the White Sox at Camelback Ranch. French, the organization's top Triple-A pitcher last season, relieved in Sunday's game against the Padres, allowing two runs (one earned) in two innings.
Up next for D-backs: Top prospect Jarrod Parker will make his second appearance of the spring as the D-backs travel to Peoria to take on the Padres. The club's No. 1 pick (ninth overall) in the 2007 First-Year Player Draft tossed a scoreless inning Monday as he continues his comeback from Tommy John surgery.