Pujols doubled home two runs in the first inning to put the Angels in front to stay. Pujols also scored on a single by Alberto Callaspo during a two-run third.
Greinke (12-5) was staked to a 5-1 lead through five innings and eventually allowed two runs on five hits with seven strikeouts in seven frames. He has a 3-2 record since being obtained by the Angels from Milwaukee.
Ernesto Frieri worked around a one-out single in the ninth to pick up his 16th save. The Angels won their third in a row.
Jon Lester (8-11) went the distance in a losing effort, giving up nine hits. It was his third complete game of the season and the ninth of his seven-year career.
Ray Liotta sues skin care company over use of likeness
Boston schools pull out free condoms over wrapping complaints