And many lisps that generate native code go through an intermediate representation. SBCL has two, simply named IR1 and IR2.
Also, even an interpreter of "intermediate code" can (dynamically) translate that intermediate code to native code. That's how many JVMs work, for example.
Many lisps in fact generate native code, in Common Lisp you can even use "disassemble" to get the native code generated for a function