I spread Milky Spore around the lawn several years ago.
Its a tiny parasite that seeks and infests insect grubs in the lawn. And it seems to have worked reasonably well, I saw no mole tunnels for the past 2 years. No insect grubs, no moles! But I saw one mole tunnel today, so I need to maybe I need to apply it again. Or spray castor oil on the lawn. Moles hate that stuff. Apparently, it makes the insect grubs and worms they feed on taste vile. Moles aren't exactly evolved to consider the taste of fish as safe food and moles have a very highly developed sense of smell.
And it isn't the moles that bother me so much, it's the voles that use the mole tunnels to get around safely underground. Moles don't eat plants or plant roots, voles do. But to reduce the voles, you have to reduce the moles. No mole tunnels, fewer voles.
I have identified a lot of vole-holes. When you see a mole tunnel and a 1" hole in it, that's where the voles are coming out to feed on the plants above ground. So I have collected plastic covers to hold vole traps under. They are baitless. These aren't mousetraps that need bait. The idea is that under enclosed covers, the voles will search around and just walk into the traps eventually.
But I think it is time to discourage the moles themselves again. They seem to hate castor oil (as do I), and sites say that moles will leave areas soaked with castor oil. We'll see. I'll start from the center of the back yard and slowly work outwards. And then spray along the fence a few times a year to keep them out.
Part of my idea is to do something different every year that moles don't like. If I do enough things they don't like, eventually they will leave. And if the moles leave my yard, I can take care of the voles afterwards.
There is a mole poison, but I won't use that. One of the cats might catch a poisoned mole and eat it.
One thing at a time, as safely as possible, and gradually... The Cro-Magnons didn't kill all the cavebears in a year, though they did eventually.