Sam - I'm sorry this happened to you, This freelancer/company scammed you. There are scammers here, More so on here then other freelancing websites because there are more clients/freelancers on this site then other sites. In the future, if you follow what I said before you should be ok because that is how you should use escrow. You deposit money into escrow, and it's held there by Upwork until the freelancer delivers the scope of work that was defined for that milestone. Only you can release that money to a freelancer and only by approving the work done for that milestone. A freelancer should deliver the work BEFORE you release those funds. You shouldn't release funds until you view the work, and you have 14 days to do that. 14 days for each milestone which gives you plenty of time to look over work, and/or test out work. If the work isn't correct, or doesn't meet your approval, then you don't release funds. If a milestone's deliverable is a working whatever, and a freelancers sends you a picture, then you don't release funds. If the work contains errors, you give the freelancer time to fix their errors and until they do, you don't release funds.
Upwork will not get you your money back. They probably will tell you to contact the freelancer and see if both of you can come to some sort of agreement. As for hiring a lawyer, to "sue" an overseas company, it's going to cost you quite a bit of money for that. Plus a lot of hassle, time and frustration with no guarantee of any results. You're dealing with international law. it's quite a bit different then what is available here in the U.S.
Even though there are scammers on here, there are also many many professional, ethical freelancers here as you encountered with your first job. If you had used escrow correctly, you probably wouldn't have been scammed, Of course, you wouldn't have gotten your job done, but you wouldn't have lost so much money.
The same thing happened to me. We agreed on a fixed price and then they started requesting payment monthly for their work. I trusted they would have a complete, functioning application by the end but the application does not work and I see they were just baiting me to get me to pay them each month. They would make some minor changes so the application appeared to be progressing but, in the end, it doesn't work at all and I'm out $4,000, plus $1000 that is still in escrow.
re: "We agreed on a fixed price... I trusted they would have a complete, functioning application"
That is an appealing idea.
I wish it was possible.
For some smaller, simpler projects, this can work.
For the most part, this approach simply will not work.
That's just the reality of how things work.
A single fixed-price contract for a large, complex project rarely works out.
I recommend hourly contracts or fixed-price contracts for smaller, individual tasks/modules that can be tested and demonstrated, and which eventually will be combined to create a successful, complete application.