Morales' two-run double highlighted a five-run Angels uprising in the third inning and Mike Napoli added a two-run homer to key a 13-hit attack as Los Angeles won its sixth game in nine contests.
Kevin Frandsen stroked three hits and Torii Hunter and Hideki Matsui each batted in a pair of runs in the Angels' win.
Scott Kasmir (3-4) picked up the victory, holding St. Louis to three runs on three hits over seven innings, allowing three walks and striking out five.
The Cardinals mounted a comeback in the last two innings off reliever Bobby Cassevah, scoring four runs -- three of them coming when Felipe Lopez got an RBI single and he and Skip Schumaker both came around on right fielder Reggie Willits' error.
St. Louis starter Kyle Lohse (1-3) was pounded for six runs on seven hits over 3 1/3 innings. Matt Holliday homered and drove in two runs and Brendan Ryan added a pair of hits and an RBI in the St. Louis loss, only the second in six games for the Cards.