In this paper, we present several novel techniques that make the recently published multilevel routing scheme (J. Cong et al, Proc. IEEE Int. Conf. on CAD, pp. 396-403, 2001) more effective and complete. Our contributions include: (1) resource reservation for local nets during the coarsening process, (2) congestion-driven, graph-based Steiner tree construction during the initial routing and the refinement process and (3) multi-iteration refinement considering the congestion history. The experiments show that each of these techniques helps to improve the completion rate considerably. Compared to the authors' previous work, the new routing system reduces the number of failed nets by 2× to 18×, with less than 50% increase in runtime in most cases.