Catching legendaries are very tough, especially without master balls. But, here are some useful moves that would increase your chances.
- Use false swipe. Pokemon with false swipe helps you a lot. This will help you get their HP down to 1 making it incredibly easy to catch. But, seeing that false swipe isn't much of a powerful move, you would need a high level or high physical Pokemon. But, if Pokemon have moves like recover, false swipe could take forever. So, you should get the move spite - reduce the amount of time they use it. One Pokemon who can learn both false swipe and spite is weavile (but he needs to be breeded for spite and TM for false swipe)
- Use stat lowering move. Moves like leer, scary face, bulldoze, snarl etc. could lower their stats making them weaker. This would definitely help. Many Pokemon can learn these moves - even weavile.
- Use status condition move. Moves like toxic, thunder wave, will o wisp etc. would help you a lot too. But, a better choice of status conditions is to use ones the don't reduce their HP such as thunder wave, attract etc.. You don't want to battle and then next thing you know they faint from your conditions - weavile can learn moves that trigger these secondary effects
So, I strongly think you should have weavile on your team - for people he's good against like dialga, palkia etc.. Don't use him for heatran, moltres etc. - unless your fast (which he is).
Weavile is an excellent choice. If you need more moves, I would be glad to post a couple more.
Hope I helped! Please like if helpful :)