Haren (3-4) gave up three hits, struck out six and walked three for the Angels, who have won four in a row.
Jason Vargas (9-10) went seven frames in the start, allowing two runs -- one earned -- on seven hits for the Mariners, who have dropped four straight contests. The left-hander also fanned four batters and walked one to lose his fifth consecutive start.
The Angels scored the only run they needed in the first inning. A pair of bunt singles from Erick Aybar and Howie Kendrick got the frame started. Napoli walked two batters later to load the bases. After Juan Rivera popped out, Aybar scored on catcher's interference with Hideki Matsui batting.
Seattle failed to score with the bases loaded in the fourth when Josh Bard flied out.
LA tacked on a run in the sixth to make it a 2-0 game. Napoli hit a one-out double and scored on Rivera's single.
After the Mariners stranded men on first and second in the top of the eighth, Napoli hit a homer in the bottom half to make it 3-0.
Fernando Rodney worked around a leadoff walk in the ninth to record his 10th save.
The Angels won the season series with the Mariners, 15-4...Los Angeles went 4-2 on its homestand...Seattle finished a six-game road trip with a 1-5 mark...Seattle's Ichiro Suzuki extended his hitting streak to 13 games...Haren improved to 7-4 lifetime against the Mariners.