Por un lado, por la muestra que estás poniendo, tu sentencia completa no está usando estee orden:
Eso es evidente, porque no está ordenando la lista ni por el primero de los elementos.
Por otro lado, estás haciendo un mal razonamiento en el segundo paso. Lo que debes obtener no son los UserId inferiores al último de los que mostraste. Lo que debes obtener es la siguiente parte de la lista completa, y eso se hace con el OFFSET del LIMIT:
Primera llamada:
Segunda llamada:
Tercera llamada:
¿Notas la diferencia?
El primer valor indica cuántos registros descartará antes de devolverte la cantidad indicada en el segundo valor. No es necesario indicarlo al principio porque su valor es cero, y cuando el parser encuentra un sólo parámetro, asume que el offset es cero.
Finalmente, sería bueno que nos postearas la sentencia completa para poder ver por qué no está ordenando el resultado de la consulta tal y como debería. Es posible que haya un error en la forma de hacerla y que no constituya un error de sintaxis.