Marson recorded his first career slam in a five-run Indians sixth inning that knocked the Angels 9 1/2 games out of first place in the American League West.
Torii Hunter homered for Los Angeles. Trevor Bell (2-5) took the loss, allowing two runs on four hits in 5 1/3 innings.
Hunter's home run tied the game 1-1 in the fifth but the Indians scored five in the sixth on Hafner's leadoff homer and Marson's bases-clearing blast.
Boston schools pull out free condoms over wrapping complaints
NBC reportedly holds celebs hostage to Jimmy Fallon's show