Non so se ci sono metodi migliori, ma io faccio così:

Posiziono il div al centro del contenitore mettendo position:relative; top:metà dell'altezza; left:metà della larghezza;.

Poi lo sposto con i margin in alto per la metà della sua altezza e a sinistra per la metà della sua larghezza.
codice:
<html>
  <head>
    <style>
      #div1 {border:1px solid red; width:600px; height:600px;
             padding-left:50%; padding-top:50%;}
      #div2 {border:1px solid blue; width:200px; height:400px;
             margin:-200 0 0 -100;}
    </style>
  </head>
  <body>
    <div id="div1">
      <div id="div2"></div>
    </div>
  </body>
</html>
Edit:
No, è un po' che non lo faccio, come avevo postato non era un metodo furbissimo.
Il div interno lo si centra mettendo il padding left e top al 50% nel contenitore.