The control problem for a ship steering system with speed loss is discussed in this paper. Two methods are proposed to deal with the unknown bounded disturbance for a sliding mode controller applied to a nonlinear surface vessel heading control system. The system uncertainties caused by speed changes are taken as internal disturbances, while the wave moments are considered as external disturbances. A feedback linearization method is adopted to simplify the nonlinear system. An adaptive method and a Nonlinear Disturbance Observer (NDO) are proposed for course keeping manoeuvres and speed keeping in vessel steering and provide robust performance for time varying wave disturbance and actuator dynamics. Furthermore, the overall stability conditions of the proposed controllers are analysed by Lyapunov's direct method. Finally, simulation results using the characteristics of a naval vessel illustrate the effectiveness of the presented control algorithms.