While I myself have never had this problem, I do spend an awful lot of time knitting socks. The elastic might work, but I can see it wearing out over time, and not being tough enough to hold up the whole sock. What I would suggest is to pick up your stitches at the top of the sock and knit a very tight rib going up. You can do this either by using much smaller needles (go down at least two sizes), or by decreasing stitches going into your rib, or both.
Since this appears to be an ongoing problem (you probably have wonderfully svelte calves, you lucky girl), if I were you, I'd probably use smaller needles for the top couple inches (or maybe even the whole leg!) of all my future socks. It sounds like your socks need to be tighter in general.
Hope this helps!