Firstly, you might want to have a look at Philippe Roubal’s Animated Car Tutorial. It’s probably more than you need, but has some good suggestions.
Partly based on that, here is one way to do what you want.
In addition to a ball and a curve (not a curvepath), we need a ‘helper’ mesh object:
You might think of it a a crude representation of the ‘footprint’ of the ball.
This footprint has the curve as a modifier, and an IPO for its position along the curve:
The ball has a ChildOf constraint to the footprint:
It is important that this be parented to the mesh, not the object, otherwise the ball won’t see the curve modifier. I just made a single vertex group consisting of the whole footprint, and used that in the constraint. As an alternative to a constraint you could probably use vertex parenting.
If we run the animation now, the ball should slide smoothly along the curve.
The final step is to make it roll, which requires a driven IPO. We should have one full rotation each time the footprint moves along the curve by the circumference of the ball:
You should now have a rolling ball. I had to flip the sign of my rotation to get the right result, but that may depend on the details of the footprint mesh.