Given a geometric graph G = (S, E) in R d with constant dilation t, and a positive constant ε, we show how to construct a (1 + ε)-spanner of G with O(|S|) edges using O(sort(|E|)) memory transfers in the cache-oblivious model of computation. The main building block of our algorithm, and of independent interest in itself, is a new cacheoblivious algorithm for constructing a well-separated pair decomposition which builds such a data structure for a given point set S ⊂ R d using O(sort(|S|)) memory transfers.