Standard glDrawElements does it, and it works just the same as gl*Pointer functions. You need to bind a buffer as GL_ELEMENT_ARRAY_BUFFER, then pass the offset (in bytes) as the last param of glDrawElements.
Doing this you’re going to be subjected to the messy details of the hardware, so don’t use GL_UNSIGNED_BYTE indexes, be aware of the max vertex index your hardware supports and whether or not you have hardware support for 32-bit indexes, otherwise you’ll probably fall back to software emulation and get no benefit from it.