Pablo Lopez pitched seven innings while striking out nine as the Miami Marlins blanked the St. Louis Cardinals 5-0.