Numerical diffusion is a difficulty with computer simulations of continua (such as fluids) wherein the simulated medium exhibits a higher diffusivity than the true medium. This phenomenon can be particularly egregious when the system should not be diffusive at all, for example an ideal fluid acquiring some spurious viscosity in a numerical model.
Numerical Diffusion and numerical Dispersion are related to the finite mathematical description (truncation error) when the spatial operators in the original governing equations (PDEs) are discretized. The order of the leading truncation term dictates if the resulting operator is diffusive (largest truncation error term is of even order) or dispersive (odd order).
To reduce or avoid it:
1. finer mesh --> larger memory, longer simulation time; maybe as a compromise, refine selectively, only in a specific region.
2. higher order discretization scheme --> consider using higher order schemes, newer multidimensional embeded solvers.
Generally speaking, for a given level of accuracy, higher order schemes are typically more cost-effective than lower ones. However all that is typically accompanied by other issues such as stability considerations and if you're limited to a certain simulation package which may only offer limited builtin support for such things--often due to robustness reasons.
Discrete algorithms, particularly in CFD, intrinsically possess an order h^2 dispersive error mechanism (h the mesh measure) that cascades solution unresolved scale Fourier content into longer wavelength oscillations. A thorough treatise on the subject is in Chapter 5 of Optimal MODIFIED CONTINUOUS Galerkin CFD, published by John Wiley 2014