Yes there is a CSS way.. you just make your link with absolute positioning and put that circle as a background and put span inside your a. Then you position that span absolutely so that it sits right where it belongs..
If you don't get what I'm trying to say, take a look at this site's source. I used variation of this technique under that slogan in text-resize - language - print nav.
There should be everything you need to know if you are already familiar with css.. I noticed that your circles are overlapping each other if you put them in square.. sot therefor you need to use z-index on :hover if you want your circles to change color on :hover. Have fun! :D
Do you you plan on having hover effetcs on those circles? If not, then you don't have to slice 'em individually. And you can do it the other way round.. just leave those links unchanged.. just add one span inside them and position that span over your circle.
I'll give you a clue: Make sure your #links a ain't positioned at all and that the div#links is position: relative; then throw one empty span inside every a and that should be display: block; postion: absolute; ->> Then just throw in correct widths and heights and position them over the circles. Voila! Easy as taking popsicle from a baby with an axe. ;)