We revisit one of the most fundamental classes of data structure problems in computational geometry: range searching. Back in SoCG'92, Matoušek gave a partition tree method for ddimensional simplex range searching achieving O(n) space and O(n 1−1/d ) query time. Although this method is generally believed to be optimal, it is complicated and requires O(n 1+ε ) preprocessing time for any fixed ε > 0. An earlier method by Matoušek (SoCG'91) requires O(n log n) preprocessing time but O(n 1−1/d log O(1) n) query time. We give a new method that achieves simultaneously O(n log n) preprocessing time, O(n) space, and O(n 1−1/d ) query time with high probability. Our method has several advantages:• It is conceptually simpler than Matoušek's SoCG'92 method. Our partition trees satisfy many ideal properties (e.g., constant degree, optimal crossing number at almost all layers, and disjointness of the children's cells at each node).• It leads to more efficient multilevel partition trees, which are important in many data structural applications (each level adds at most one logarithmic factor to the space and query bounds, better than in all previous methods).• A similar improvement applies to a shallow version of partition trees, yielding O(n log n) time, O(n) space, and O(n 1−1/ d/2 ) query time for halfspace range emptiness in even dimensions d ≥ 4.Numerous consequences follow (e.g., improved results for computing spanning trees with low crossing number, ray shooting among line segments, intersection searching, exact nearest neighbor search, linear programming queries, finding extreme points, . . . ).