Give people work, set goals, and hold them accountable. You can't get a completed app approved and on the street in months? Fire the managers involved. Somebody complains that they don't have ping pong balls? Take away the ping pong table.
Stopping remote work will not improve performance. Firing poor performers is the solution, not chaining them to their desk.
Firing is always messy business. It's a good idea to avoid it unless it is absolutely necessary.
If I have a few bad apples (the lazy, self-entitled employees of a previous post) and they're not responding to being held accountable, the whole staff needs to know I will use all tools available.
Frankly, if you manage properly, there's very little firing you have to do. Most bad employees, when they see you hold people accountable, will find another job. The only ones who stick around are the one's who are holding out for unemployment.