We consider the classical permutation flow shop problem which requires scheduling n jobs through m machines which are placed in series so as to minimize the makespan. This problem is known to be NP-hard. We describe a branch-and-bound algorithm with a lower bounding procedure based on the so-called two-machine flow shop problem with time lags, ready times, and delivery times. We present extensive computational results on both random instances, with up to 8000 operations, and well-known benchmarks, with up to 2000 operations, which show that the proposed algorithm solves large-scale instances in moderate CPU time. In particular, we report proven optimal solutions for benchmark problems which have been open for some time.