Field-scale observations suggest that rock heterogeneities control subsurface fluid flow, and these must be characterised for accurate predictions of fluid migration, such as during \CO2 sequestration. Recent efforts have focused on simulation-based inversion of laboratory observations with X-ray imaging, but models produced in this way have been limited in their predictive ability for heterogeneous rocks. We address the main challenges in this approach through an algorithm that combines: a 3-parameter capillary pressure model, spatial heterogeneity in absolute permeability, the constraint of history match iterations based on marginal error improvement, and image processsing that incorporates more of the experimental data in the calibration. We demonstrate the improvements on five rocks (two sandstones and three carbonates), representing a range of heterogeneous properties, some of which could not be previously modelled. The algorithm results in physically representative models of the rock cores, reducing non-systematic error to a level comparable to the experimental uncertainty.