A graph G = (V, E) on n vertices is (alpha, epsilon)-regular if its minimal degree is at least an, and for every pair of disjoint subsets S, T c V of cardinalities at least m, the number of edges e(S, T) between S and T satisfies vertical bar e(S,T)/vertical bar S vertical bar vertical bar T vertical bar - alpha vertical bar <= e. We prove that if alpha >= epsilon > 0 are not too small, then every (alpha, epsilon) -regular graph on n vertices contains a family of (alpha/2 - O(epsilon))n edge-disjoint Hamilton cycles. As a consequence we derive that for every constant 0 < p < 1, with high probability in the random graph G(n p), almost all edges can be packed into edge-disjoint Hamilton cycles. A similar result is proven for the directed case. (c) 2004 Elsevier Inc. All rights reserved.