Greinke (5-2) went seven innings, allowing two runs on five hits with a walk and seven strikeouts, staking the red-hot Angels to their sixth straight triumph and 11th in 12 contests overall.
Ernesto Frieri racked up his 18th save despite a shaky ninth inning.
Mike Trout and Alberto Callaspo homered for Los Angeles, which came into the contest two games out of an American League wild card spot.
Tigers starter Anibal Sanchez (2-5) was tagged for seven hits and three runs over seven innings.
Despite the loss, second-place Detroit remained two games behind the American League Central-leading Chicago White Sox, who lost to Kansas City Sunday.
Reindeer recovered after escaping from Santa during lighting ceremony
Selena Gomez drops F-bomb, walks off stage during Jingle Ball performance