We used this same approach (except we are not using TLD, but instead are using directory paths for the regions). We have storefronts in US, Canada, Australia, United Kingdom, and EU. The hreflang tags are working very well for all the storefronts except EU.
In these other regions, for all of our key tracked search terms, our ranking page is one within the right region for, when checked by the Moz Rank Tracker using the corresponding Google search engine. And, none of the pages from these other regions are ranking in a Google US search. So far so good.
But, for Europe, only our US pages are ranking when I check with any of the EU country Google engines. And, The EU home page is ranking for some searches in the US, including right now it is showing as one of our organic sitelinks for our brand name search.
We also geo-targeted all of our properties except for two, on Google Search Console. Originally. That would be EU (because Google doesn't allow to target for EU, only for specific countries) and our US site (because we use our www domain in US with no directory path, and in Google Search Console if we geo-target that, it applies to all of our regional directory paths).
So, we changed our geo targeting recently, and targeted our EU property to Germany. We chose that because Germany is our largest market in EU. But this hasn't helped either.
Basically, all the available tools we know of (hreflang tags, GSC geo-targeting) seem to fail at targeting EU. It is a shame, because many brands have an EU site (rather than individual sites for each country). But we have not yet found an approach which works well.