is there any other ways besides putting them to sleep or paralyzing them?

I'll list a few.

If you're lucky and you're playing in Gen V, you may also experience a critical capture, which means the PokeBall will only need to shake once for the Pokemon to be caught.

Will add more.

Using the masterball works too, but one of my favourite technics is this. It does involve getting it to a low level, but using tons of timer balls (buy 30-40) is very effective:

The Timer Ball is a PokéBall that works best on Pokémon as the duration of battle increases. If up to 10 turns have taken place, the Capture Rate is 1. If between 11 & 20 turns have taken place then the Capture Rate is 2. If between 21 & 30 turns have taken place then the Capture Rate is 3. Finally, if over 30 turns have taken place, the Capture Rate is 4. CatchValue = ((( 3 Max HP - 2 HP ) (Catch Rate 4 ) / (3 Max HP) ) Status Modifier CatchValue = ((( 3 Max HP - 2 HP ) (Catch Rate 3 ) / (3 Max HP) ) Status Modifier CatchValue = ((( 2 Max HP - 2 HP ) (Catch Rate 1 ) / (3 Max HP) ) Status Modifier

The Timer Ball is a PokéBall that works best on Pokémon as the duration of battle increases. If up to 10 turns have taken place, the Capture Rate is 1. If between 11 & 20 turns have taken place then the Capture Rate is 2. If between 21 & 30 turns have taken place then the Capture Rate is 3. Finally, if over 30 turns have taken place, the Capture Rate is 4.

CatchValue = ((( 3 Max HP - 2 HP ) (Catch Rate 4 ) / (3 Max HP) ) Status Modifier CatchValue = ((( 3 Max HP - 2 HP ) (Catch Rate 3 ) / (3 Max HP) ) Status Modifier CatchValue = ((( 2 Max HP - 2 HP ) (Catch Rate 1 ) / (3 Max HP) ) Status Modifier

So after 30 throws, you will surely be able to catch the legendary Pokemon. The premier ball works too, but it isn't that reliable.