Mitch Haniger hit a three-run shot in the seventh to help propel the Seattle Mariners past the Boston Red Sox with a 5-4 win.