I noticed an XP bonus (+10 base if it just hits, no extra bonus for good throws) for a "curve ball" upon catching a Pokémon.
I have no idea how I did this, and would like to know how to replicate this for the future.
How do I throw a curveball?
On the Capture Screen (where you see the Pokémon and the Pokéball), you may throw a curveball by following the below steps:
The Pokéball will curve back in the same direction that it was spun, so spinning the ball counter-clockwise will result in the ball curving left. As a result, you want to aim right of the Pokémon.
This method requires some practice, but is rather easy after getting the hang of it.
If a curveball is successfully thrown, the catch bonus multiplier for the Pokémon increases by a factor of x1.7, making it as effective as a straight Excellent throw.
You don't actually have to spin the ball before releasing it. It is possible to throw a curve ball by not throwing the ball completely straight but instead throw straight but a little to the side right before you release it. I've gotten extremely good at doing this on accident and have on occasion managed to waste 30 balls because I kept throwing curves... Not so fun when you have fifteen super balls and are trying to catch a Gengar (unfortunately it fled when I finally managed to hit it...) same with the only Wartortle I've met in the wild... Now I usually get surprised by the curves because I tend to get curves even when it looks like it hit with a normal throw😅
Many of the answers submitted are too complex. They are over-thinking. I throw curveballs every time and my hit rate has gotten quite high. To throw a curve ball, simply draw a spiral or number six on the screen. Draw from the inside of the spiral outward. You can draw your spiral clockwise or counter-clockwise; it works either way. Only one loop around the spiral is necessary. More loops make it harder to aim, and serve no practical advantage.
And of course, practice, practice, practice.