This paper describes a novel three-dimensional (3D) face recognition method when the head pose varies severely. Given an unknown 3D face, we extract several invariant facial features based on the facial geometry. We perform a Error Compensated Singular Value Decomposition (EC-SVD) for 3D face recognition. The novelty of the proposed EC-SVD procedure lies in compensating for the error for each rotation axis accurately. When the pose of a face is estimated, we propose a novel two-stage 3D face recognition algorithm. We first select face candidates based on the 3D-based nearest neighbor classifier and then the depth-based template matching is performed for final recognition. From the experimental results, less than a 0.2 degree error in average has been achieved for the 3D head pose estimation and all faces are correctly matched based on our proposed method.