Current measurement is the key to motor control. Actually, voltage measurement is often irrelevant. (Another key is rotor position measurement or estimation. This can be estimated (for which you may need phase voltage measurements, after all!), but direct position measurement, using hall sensors or even better, higher resolution encoders, is so much easier and better at low speeds.)
There is no magical way to calculate the current. You could try to approximate it, but being key parameter, it is always just sensed. If you want to cheap out on this, just measure the DC bus current, although the savings compared to sensing two phase currents properly isn't that big.
I'm not aware of any well-known proper solution without current sensing delivering good results. Current sensing would be crucial for protection in corner cases anyway, so it is added to the BOM regardless.
At complete stall, you need to output currents to the coils so that they produce a magnetic field directed 90 degrees forward from the current rotor position, so that it's generating forward torque. Because it's in stall, the motor is generating no back-EMF, and the current is solely defined by the PWM duty cycle, and the resistance of the windings. Note that resistance is poorly controlled, and varies with temperature. Hence, feedback! Current sense -> current control PI loop -> PWM setpoint.
Now you step the rotor a tiny bit forward, recalculate the "90 degrees forward" current vector. No problem, your PI loops adjust the PWMs to direct the torque.
But, as you start increasing speed, your current setpoints rotating as sine waves start to spin so fast that your current control PI loops add too much delay. At this point, you add FOC, basically just rotating the current measurement values in sync with the rotor, so that they appear stationary, then PI loop these rotated values, then rotate back the results (PWM setpoints). Conversion into 2-phase and back into 3-phase are typically added to make the math easier to handle.