hmm....
just check "phent_addforcelocal(entity, vecforce, vecpoint );"
If you want to program the physics of a ball seriously and realistic you need to handle/understand this function.
You can exactly say where a force is applyed to an entity/ball. give it a negative z-value(on vecpoint) and it will hopp like a grasshopper like it should,

you also can make a spinshot when you change vecpoint.x and/or vecpoint.y while performing a shot/pass

I would recommand you to explore
"phent_addforcelocal(entity, vecforce, vecpoint );"
it will helps you out thats for sure ^^
cheers
Zwecklos