Carlos Zambrano allowed only one hit in eight innings and retired the final 20 batters he faced last night as the Chicago Cubs beat the Cincinnati Reds 5-1.