Perfect space-time block codes (STBCs) were first introduced by Oggier et al. to have full rate, full diversity and non-vanishing determinant. A maximum likelihood decoder based on the sphere decoder has been used for efficient decoding of perfect STBCs. However the worst-case complexity for the sphere decoder is an exhaustive search. In this paper we present a reduced complexity algorithm for 3 × 3 perfect STBC which gives essentially maximum likelihood (ML) performance and which can be extended to other perfect STBC. The algorithm is based on the conditional maximization of the likelihood function with respect to one of the set of signal points given another. There are a number of choices for which signal points to condition on and the underlying structure of the code guarantees that one of the choices is good with high probability. Furthermore, the approach can be integrated with the sphere decoding algorithm with worst case complexity corresponding exactly to that of our algorithm.