An adaptive non-linear observer-based controller is designed for a full model of an induction motor including both electrical and mechanical dynamics. The controller is designed primarily for speed control and is then modified to address position control. Without flux measurement, the controller has the ability to adapt to changes in rotor resistance and load parameters. Considering that the separation principle does not hold for general classes of non-linear systems, an adaptive observer is first developed to accommodate rotor resistance and load parameter variations. A non-linear feedback control law, that uses the state estimates from the adaptive observer to steer the estimated speed (position) and flux magnitude to the desired trajectories, is then designed. The basic idea is to use a singularly perturbed model to design a sliding mode observer. Estimated stator currents converge to their true values in the fast time scale and an adaptive flux observer on the sliding surface is developed using the equivalent switching vector. The adaptive scheme guarantees that both the estimated fluxes and the estimated rotor resistance converge to their true values. Because the observer design is independent of the control, closed-loop stability can be guaranteed. Moreover, because the adaptive observer system is typically a singularly perturbed system that can be decomposed into slow and fast dynamics, controllers are designed for both of these two subsystems. The fast dynamics are stabilized by a linear feedback law while an input–output decoupling and linearizing control scheme is designed for the slow dynamics, based on non-linear geometric control theory. Finally, simulation results confirm the theoretical results and exhibit good performance when applied to the benchmark problems suggested by Ortega et al. (Call for paper for special issue of International Journal of Adaptive Control and Signal Processing). Copyright © 2000 John Wiley & Sons, Ltd.