Introduction
This is a fairly common problem, and the issue stems from the way Teams does number matching.
Microsoft Teams is a global solution and is designed to use different telephone number formats locally within different countries.
For instance, when you dial a number in Europe, you may need to dial 00 when calling another country. For the US we dial 011 for International Dialing. These are referred to as prefixes.
With Different countries using different dialing methods a unified format for all phone numbers was needed, enter e164 formatting.
What is e164?
e164 is an international standard (ITU-T Recommendation), titled The international public telecommunication numbering plan, that defines a numbering plan for the worldwide public switched telephone network (PSTN) and some other data networks.
e164 defines a general format for international telephone numbers. Plan-conforming numbers are limited to a maximum of 15 digits, excluding the international call prefix.[1]

The e164 recommendation provides the telephone number structure and functionality for three categories of telephone numbers used in international public telecommunication:
For each of the categories, it details the components of the numbering structure and the digit analysis required for successful routing of calls. Annex A provides additional information on the structure and function of e164 numbers. Annex B provides information on network identification, service parameters, calling/connected line identity, dialing procedures, and addressing for Geographic-based ISDN calls. Specific E.164-based applications which differ in usage are defined in separate recommendations.
In summary e164 provide a number formatting method which is globally accepted, and is the foundation for number dialing within Microsoft Teams.
So how do you use e164 formatting in Teams?
Simple, you add a + (plus) before the country code of the number you are calling.
For instance, if I wanted to call 570-555-1212, I would dial +15705551212.
Or say I wanted to call the US Embassy in London I would dial +44 20 7499 9000.
This ensures that the phone number you are trying is recognized correctly and that the proper routing is used on that number.
But Teams will accept a 10 digit number, right?
Well kind of. Microsoft Teams uses the Account Location, as in the location address used when you setup your Microsoft 365 account to determine localized dialing rules. So in 90% of dialing cases, it will know that you Dialing a 10 digit number should be translated into e164 format. But in some cases that logic doesn’t always work.
Even when using e164 format I am having calling issues
This is a user aid issue. Teams is highly intergraded into the Azure Active Directory and uses a lot of the information about your users in an effort to make communicating easier. For instance, it automatically knows all of your users, and you are able to search for anyone within your company. If you have contact details added to the users such as their mobile numbers, or an office number you can use those to make calls as well.

But this integration does have its flaws, and from time to time it will fail a “number search.” This can be problematic for your users, but a simple restart of Teams generally fixes the issue.
Microsoft Teams as a mobile and desktop client is basically just a “fancy” front end for the Teams Web Application, as such doing a restart effectively clears the cache.