The potential to differentiate human embryonic stem cells (hESCs) in vitro to provide an unlimited source of human hepatocytes for use in biomedical research, drug discovery, and the treatment of liver diseases holds great promise. Here we describe a three-stage process for the efficient and reproducible differentiation of hESCs to hepatocytes by priming hESCs towards definitive endoderm with activin A and sodium butyrate prior to further differentiation to hepatocytes with dimethyl sulfoxide, followed by maturation with hepatocyte growth factor and oncostatin M. We have demonstrated that differentiation of hESCs in this process recapitulates liver development in vivo: following initial differentiation, hESCs transiently express characteristic markers of the primitive streak mesendoderm before turning to the markers of the definitive endoderm; with further differentiation, expression of hepatocyte progenitor cell markers and mature hepatocyte markers emerged sequentially. Furthermore, we have provided evidence that the hESC-derived hepatocytes are able to carry out a range of hepatocyte functions: storage of glycogen, and generation and secretion of plasma proteins. More importantly, the hESC-derived hepatocytes express several members of cytochrome P450 isozymes, and these P450 isozymes are capable of converting the substrates to metabolites and respond to the chemical stimulation. Our results have provided evidence that hESCs can be differentiated efficiently in vitro to functional hepatocytes, which may be useful as an in vitro system for toxicity screening in drug discovery.