How to texture a marble
Final result:




  This one is too "heavy" answer to explain it step by step so I'll make
  an overview of the node setup and if you'll have some questions just
  ask in comments and I'll expand it.


Overview:

Overall it's really simple setup. Think of it as spheres squashed and distorted inside marble (because they exactly are). Spheres are Spherical Gradient, squash is Mapping Node and distortion are nodes named Sine Wave.


  Don't forget to set in Render > Light Paths > Volume - to more than 0! In this example it is set to 4.




From Node Setup:


They control how much distorted inside elements are. It is separated for X and Y wave. You can make pretty straight lines with those values or with more waviness.





Those one controls overall width of inside elements.
With Scale in Mapping node you can control how our starting sphere (Gradient > Spherical) will be squashed on X, Y and Z axes.
This is color for our elements.
And lastly (or maybe it should be first) this is starting sphere that is pretty much just manipulated by Sine Waves and Mapping Node.


Blend file: