This paper describes the application of the adjoint method to the history matching problem in reservoir engineering. The history matching problem consists in adjusting a set of parameters, in this case the permeability distribution, in order to match the data obtained with the simulator to the actual production data in the reservoir. Several numerical experiments are presented which show that our method is able to reconstruct the unknown permeability distribution in a reliable and efficient way from synthetic data provided by an independent numerical forward modelling code. An efficient and flexible regularization scheme is introduced as well, which stabilizes the inversion and enables the reservoir engineer to incorporate certain types of prior information into the final result. © 2005 IOP Publishing Ltd.