Recent advances in theory, algorithms, and computational power make it possible to solve complex, optimal control problems both for off-line and on-line industrial applications. This paper starts by reviewing the technical details of the solution methods pertaining to three general categories: dynamic programming, indirect methods, and direct methods. With the aid of a demonstration example, the advantages and disadvantages of each method are discussed, along with a brief review of available software. The main result that emerges is the indirect method being numerically competitive with the performance of direct ones based on non-linear programming solvers and interior point algorithms. The second part of the paper introduces an indirect method based on the Pontryagin Minimum Principle (PMP). It also presents a detailed procedure and software tools (named PINS) to formulate the problem, automatically generate the C++ code, and eventually obtain a numerical solution for several optimal control problems of practical relevance. The application of PMP relates to the analytical derivation of necessary conditions for optimality. This aspect-often regarded in the literature as a drawback-is here exploited to build a robust yet efficient numerical method that formally eliminates the controls from the resulting Boundary Value Problem, thus gaining robustness and a high convergence rate. The elimination of the control is obtained either via their explicit formulation function of state and Lagrange multiplierswhen possible-or via an iterative numerical solution. The paper closes presenting a minimum time manoeuvre of a car using a fairly complex vehicle model which also includes tyre saturation.