The past decades have seen remarkable progress in computing capabilities, allowing CFD to become an ever more present tool in describing and predicting unsteady complex flows. However, robust optimisation and control of these flows on the basis of such high-fidelity simulations remains a big challenge. Targeted manipulation of such flows by enhanced designs or active control strategies is indeed crucial for improvements in performance and robustness. It is also necessary for venturing beyond standard operating conditions, and to ultimately meet the ever more stringent regulations on the pollutants/emissions. The main bottleneck arises from the large cost associated with performing each function evaluation (a full and potentially unsteady CFD calculation), and suboptimal performance of state-of-the-art optimisation algorithms in the presence of strong nonlinearities and turbulence. During this talk we will introduce gradient based optimisation, as one of the most common optimisation methods in fluid mechanics. The performance of gradient-based algorithms will be explored and analysed in various flow regimes, highlighting the limitations of this approach, for which remedies are suggested and assessed. In addition, alternative optimisation algorithms with various degree of complexity are also introduced. These algorithms combine concepts from both derivative free and gradient-based optimisation techniques and employ a multi-fidelity approach (resorting to model reduction procedures) to reduce the numerical cost of both the function and gradient calculations.