The simple solution is to not pre-render the background at all. Draw everything live, in 3D, with a fixed camera angle. Modern GPUs can achieve live results that look better than what we often had to pre-render for back in the day (especially with good art).
That said, if you want to reproduce the technique for "authenticity," efficiency, or simply to achieve something even better than what you could do live, it's fairly straightforward in concept: pre-render the scene and save both the color and the depth information.
This will allow you to know the depth of every pixel in the scene, which you can reconstruct into a world-space position of every pixel in the scene (also as a pre-computation step, since the camera angle is fixed). This means you can know when the character is in front of or behind that pixel (render characters and dynamic objects live, in 3D, with the same camera transform used to render the scene). You can use this information to slice the scene into 2D layers which can be drawn back-to-front.
You'll also want to bake out the collision information for props in the 3D scene, such as (in your example), the payphones. Otherwise the player will phase through them, either instantly (in the case of a layer-based rendering) or "smoothly" (if you only work with the pixel depths). Both cases will look very unusual in practice and you'll want to prevent them.
As Krom says, you'll probably also want a simple navigation mesh to define where the player can and cannot walk; this can also be exported from the pre-computed scene baking pipeline. There is, in fact, quite a lot of optimization you can do do with this approach in terms of pre-computing data (the downside, of course, being that iteration on the specific details of the room may require re-exporting through the entire pipeline, which may be costly).