There are so many circumstances which affect the model of hiring, let's try to consider these models coverings possible hidden risks for your business:
1) Hiring freelancers by yourself
It would cost MUCH more for your project in the long run, if you have made a wrong choice.
Advise: hire people this way only with recommendations from their previouse employees, or taking into account their profile score, for example it's easy to check on upwork: http://prnt.sc/cz3htz.
2) Hiring a freelancer while your decision is backed by an expert in the area
Gives you more confidence that candidate meets your requirements.
Still, you need to be sure that the original expert you’ve hired is really good enough to interview potential candidates.
Advise: usually this kind of experts has a good level of trust in the community. Check their blogs, references, etc. If you are going to invest in your team a lot (not just 1 position), visit relevant conferences and talk to speakers.
3) Hiring a recruiting agency
Probably it's one of the fastest ways to find someone,
Usually recruting agencies also test psychological profiles of candidates, so you can be sure that the person you hire is not just good enough as a tech expert, but is also the right person to work in the environment of your company
Still, usually recruiters are working for comission, so they are interested in finding someone faster. They do not guarantee that expert they’ve found is the best choice for you.
Good recruiting agencies cost a lot, you need do some research before hiring.
4) hiring IT company
You actually delegate all risks to your IT provider, because you are getting a tech partner, not just a developer or a team. If it's a good company, you are getting a client manager, legal support in signing up agreements, quality assurance support, business analytics, etc. So, actually you are getting access to the best resources a company has, thus the doors are open to their experience as well.
Pretty fast in getting resources to expand your team.
If they provide you with a good PM, you can be aware of risks, estimations and be confident regarding deadlines.
Ask for references from previous clients and case studies. Don't look at low rates, as usually low rates of an IT company bring some risks, because such a position means that the company doesn't have any other advantages before competitors like expertise, references, certifications.
Hiring an unreliable software outsourcing provider can sink you in more trubles even in comparison with all previousely described models.
If you have enough budget for this and software development is one of the specializations of your company and you have a good person on your mind and dedicated budget, go with this step. Find someone you can trust and deligate building tech support to this person.
This stuff can be helpful as well: https://qarea.com/articles/how-hire-developer-right-manner