As far as I know, we numerically solve any system by reducing it to ODEs and somehow we manage to wire the new system into the RK algorithm. I have seen solutions where there are formulas to use the basic algorithm on a $2$- or $3$-dimensional problem, but so far I don't really understand how we do it.
I mean here basic differential equations so no partial differential equations, no delay, etc.
I hope you mean systems of differential equations of the ordinary type, no partial derivatives, no delay, function and derivative all evaluated at the same state vector.
These get indeed transformed into an explicit system of ODE of order 1 $$ \vec x'(t)=\vec F(t,\vec x(t)). $$ These you can now insert into the Runge-Kutta method of your choice. For the step from demonstrative but simple methods to serious applications the educational methods used are the stereotypical order 4 Heun-Kutta RK4 method with fixed step-size on the simple side and the embedded order 4(5) Fehlberg method with step-size control on the serious side.
(RKF45 is dated, the same can be said for the popular DoPri45. There are also simple methods like Fehlberg23 that demonstrate the variable-step principle with a simple but non-trivial step computation.)
While as an intermediate step a component-wise implementation of the method step is often seen, the most clean and reusable implementation never leaves the vector formulation using vector or array data types. In some programming languages (with vector types with overloaded arithmetic operations) the same method step implementation can be used for the scalar and the vector case. The surrounding time loop has to make a distinction if the trajectory data is collected in a list.