My solution: a gardening sieve. With a bit of leftover steel mesh and some hand-me-down meranti planks from the garage and some brand new steel screws, I hacked up a wooden frame to both hold the mesh rigid and to prevent material from spilling over the edge. I did this with my el-cheapo Ryobi table saw (more on that later), but you can build this just as well with a hand saw, or even no saw. You could even use logs and nails if you had to.
I added the diagonal corner pieces because the frame was too wobbly for my liking without them. The mesh was originally about twice the size of the sieve as it is now, which would have been unwieldy. In fact the sieve is just the right size now - neither too big nor too small, so I can comfortably hold it and shake the soil/gravel mixture to separate them, as you can see here where I have a little pile of gravel piling up.