Eric Young lined a 3-1 pitch to right field to open the Colorado first inning and Miller (5-2) was perfect the rest of the way. He threw 113 pitches, 84 of them for strikes, and fanned 13.
It was the first complete game and first shutout in Miller's career, which consists of eight starts and 13 appearances over two seasons with the Cardinals. He lowered his earned run average to 1.58 for the year.
The 22-year-old Miller also gave up just one hit in seven innings while picking up a win against Milwaukee on April 12.
The loss went to Jon Garland (3-3), who gave up all three runs on seven hits in five innings. It was Colorado's third straight setback.