Congestion games constitute an important class of games in which computing an
exact or even approximate pure Nash equilibrium is in general {\sf
PLS}-complete. We present a surprisingly simple polynomial-time algorithm that
computes O(1)-approximate Nash equilibria in these games. In particular, for
congestion games with linear latency functions, our algorithm computes
(2+ϵ)-approximate pure Nash equilibria in time polynomial in the
number of players, the number of resources and 1/ϵ. It also applies to
games with polynomial latency functions with constant maximum degree d;
there, the approximation guarantee is dO(d). The algorithm essentially
identifies a polynomially long sequence of best-response moves that lead to an
approximate equilibrium; the existence of such short sequences is interesting
in itself. These are the first positive algorithmic results for approximate
equilibria in non-symmetric congestion games. We strengthen them further by
proving that, for congestion games that deviate from our mild assumptions,
computing ρ-approximate equilibria is {\sf PLS}-complete for any
polynomial-time computable ρ