A batch process is characterized by the repetition of time-varying operations of finite duration. Due to this repetition, there are two independent “time” variables, namely, the run time within a batch and the batch index. Accordingly, the optimization objective can be defined for a given batch or over several batches. This chapter formulates the dynamic optimization problem for a given batch and shows that it can be reformulated as a static optimization problem to be solved over several batches. Furthermore, it is shown how optimization can be seen as self-optimizing control that is implemented both within batch and in a batch-to-batch manner. The use of feedback control is of particular interest in the presence of uncertainty. This chapter describes how to set up the various control loops and implement optimizing feedback control. The approach is illustrated via the optimization of a batch distillation column.