Theoretically, there IS a way to avoid paying fees. This is achieved simply by not including a miner's fee in your transaction. You'd be extremely unlikely to ever get it confirmed though, unless you intervene by somehow getting it submitted to a miner to include it. Deliberately sending low or zero fees is not good behaviour though. Just learn to pay what you need to.
I wonder when was the last time that a 0 fee transaction was ever mined successfully? This would be an interesting stat to know. I guess after 2012 it was just impossible, probably earlier.
Last 24 hours there were 10 such txs confirmed according to one aggregate, so it's definitely still possible! I imagine at least in one situation where this might happen: a miner performs a low priority zero fee transaction and simply includes it in their block. Here's one from just 7 days ago:
https://blockchain.info/tx/06d89bb591064c0c807ad2edb27656b49d4dae2f60181781d19b9939e7a09b8cFor "standard" txs... I can't seem to locate older posts where someone had tried this, or my own posts where I've done it for testing purposes but definitely as recently as last year, first quarter when I was learning how to use Electrum. I don't have those wallets anymore so can't even look them up. Initially I thought latter versions disabled zero fees but someone told me around v2.9 that it was still possible, and when I checked he was right.
I also recall using the antpool acceleration service to successfully help confirm a few zero fee txs - all this when mempool was nearly empty.