The Royals improved to 27-14, the best record in the majors, while the Cardinals dropped to 27-15, best in the National League.
Morales, who leads the American League with 37 RBIs, hit a three-run homer with two out in the first. He homered again in the third with Lorenzo Cain aboard for his 13th multihomer game. The five RBIs matched a Royals' season high.
Young (4-0) got 13 flyball outs and struck out two. In Young's four starts, he has allowed one earned run in 22 1-3 innings (0.40 ERA).
Young, who beat the Cardinals for the first time in his career, gave up all singles and walked two, while stranding seven runners. He threw a season-high 106 pitches.
Morales and Salvador Perez combined for six of the Royals' 11 hits.
Cardinals right-hander Lance Lynn (3-4), who had won his previous two starts, was pulled after six innings, allowing five runs and 10 hits.
The Cardinals loaded the bases in the eighth on a hit batter, a walk and a single off reliever Ryan Madson, but came away empty. Madson got out of the inning by retiring Jason Heywood on a fielder's choice to second baseman Omar Infante.
St. Louis stranded 13 and went 0 for 11 with runners in scoring position. The Cardinals were shut out for the second straight day, losing 5-0 Thursday to the New York Mets.
Cardinals: OF Jon Jay (left wrist tendinitis) is scheduled to come off the disabled list Tuesday.
Cards: RHP John Lackey, who starts Saturday, is 0-1 with a 4.50 ERA in four road starts.
Royals: Volquez, who moves up a day in the rotation, has problems with Cards OF-DH Matt Holliday, who is 11 for 32 (.344) with two homers off him.
Link to box score: Kansas City (27-14) 5, St. Louis (27-15) 0