Contreras hits 2-run HR in 8th as Cubs beat Marlins 2-1