Rookie Jose Fernandez outpitched a rusty Jake Westbrook, and the team with the worst record in the majors beat the team with the best record.
Fernandez had a career-high 10 strikeouts in seven innings Friday, and the Miami Marlins spoiled Westbrook's return from an elbow injury by defeating the St. Louis Cardinals 5-4.
The 20-year-old Fernandez (4-3) became the first pitcher under the age of 21 to strike out 10 or more since Felix Hernandez with Seattle in 2007. Relying heavily on breaking balls, he threw a career-high 107 pitches and allowed three runs, two earned.
Westbrook (2-2), who had been sidelined with elbow inflammation, went five innings in his first game since May 8. He allowed five runs, two of them unearned because of a misplayed grounder by second baseman Matt Carpenter, and his ERA rose to 2.05.
Fernandez settled down after giving up two runs and three hits in the first inning. He had a 1-2-3 third, striking out Carlos Beltran, Matt Holliday and Allen Craig.