3D face recognition has been extensively investigated in the last two decades due to its wide range of applications in many areas such as security and forensics. Numerous methods have been proposed to deal with the challenges faced by 3D face recognition such as facial expressions, pose variations and occlusions. These methods have achieved superior performances on several small-scale datasets including FRGC v2.0, Bosphorus, BU-3DFE, and Gavab. However, deep learning based 3D face recognition methods are still in their infancy due to the lack of large-scale 3D face datasets. To stimulate future research in this area, we present a comprehensive review of the progress achieved by both traditional and deep learning based 3D face recognition methods in the last two decades. Moreover, comparative results on several publicly available datasets under different challenges of facial expressions, pose variations and occlusions are also presented.