This paper investigates the problem of three-dimensional trajectory tracking control for an underactuated autonomous underwater vehicle in the presence of uncertain disturbances. The concept of virtual velocity control is adopted and desired velocities are designed using the backstepping method. Then, the trajectory tracking problem is transformed into a stabilization problem of virtual velocity errors. Dynamic control laws are developed based on non-singular terminal sliding mode control to stabilize virtual velocity errors, and adaptive laws are introduced to deal with parameter perturbation and current disturbances. The stability of the closed-loop control system is analyzed based on Lyapunov stability theory. Two sets of typical simulations are carried out to verify the effectiveness and robustness of the trajectory tracking control algorithm under uncertain disturbances.