I used PiHole for a long time, then graduated to self-hosting a VPN so I could get as-blocking when away from my home network.
Ultimately I ended up using just AdGuard DNS via the DNS profile for iOS, and hard code the DNS into my home routers.
There might be a better setup, but this simple deployment takes care of 98% of ads.
They intentionally hold it hostage for compromises on other things we don’t actually want.
The budget is probably more a formality anyway.