Alright, I could go into a giant explanation of the actual equation used to define whether a Pokemon gets caught or not, but I won't bother.
So, in short form, the most effective way to catch any Pokemon is to get its HP down right to 1, and either freeze them or induce sleep.
Next is your ball choice. Use lots of Ultra Balls, and if you have access to them, use Timer and Dusk Balls occasionally. Fast Balls made form Apricorns also make it much easier to catch a fast Pokemon like Lugia.