What is the correct way to update both WP/plugins/themes without breaking the site?

This is the reason I always recommend to use the least amount of plugins. This obviously easier to say then do, but if you are a developer you should strive to eliminate all plugins by incorporating the relevant code into a site specific plugin or theme. Integrators obviously have less ability to achieve this.

The problem with the upgrades is not so much with having the dev/staging enviroment. You can probably just keep it, or have some tool that syncs the production into them, the real problem is to have a proper QA plan to verify that nothing broke. QA is a time consuming affair and even if you know how to write unit tests, some things just need a human to use a browser to test them.

The easiest solution to the problem is not to upgrade when new versions come out, but do it only when you upgrade core to bundle all testing together. For this to work without putting yourself in a security risk you need to follow the development of the themes/plugins that are being used to know when an update is done because of security issue or because there is some new feature. If it is a new feature, there is no real need to rush upgrading it.