We describe a universal non-variational approach allowing to find numerically the eigenvalues of a self-adjoint operator in the gaps of essential spectrum. The method does not produce spurious eigenvalues and gives two-sided a posteriori error estimates. As an illustration, we discuss a periodic Schroedinger operator perturbed by a compact potential.