The natural frequency is a real number, and Matlab computes it correctly by taking the magnitude of the (complex-valued) pole.
As an example, the denominator of the transfer function of a second-order continuous-time system is given by
$$D(s)=s^2+2\omega_n\zeta s+\omega_n^2\tag{1}$$
where $\zeta$ is the damping ratio, and $\omega_n$ is the natural frequency. The poles are given by the roots of $(1)$. Assuming an underdamped system ($\zeta<1)$, the poles are given by
$$s_{\infty}=-\omega_n\left(\zeta\pm j\sqrt{1-\zeta^2}\right)\tag{2}$$
from which we get
$$|s_{\infty}|^2=\omega_n^2\left[\zeta^2+(1-\zeta^2)\right]=\omega_n^2\tag{3}$$
So the natural frequency $\omega_n$ is given by the magnitude of the pole $s_{\infty}$.
Note that the natural frequency $\omega_n$ is not the actual oscillation frequency unless there is no damping (i.e., $\zeta=0$).