Is there a way to break (like with a pick) a block with a command? [duplicate]

I'm looking for a command that would (possibly indirectly) break a chosen (arbitrary type) block, as if hit by player with a hand long enough - dropping the item, dropping contents if it's a container, etc. I'd like a method to break any block a player in survival can break with a hand through punching it long enough.

I'm okay with a side-effect of breaking other types of block not normally breakable, e.g. water source or bedrock - doesn't matter either way. Also, no particular preference on the breaking tool - if the block produces special drops when mined with a specific tool, like leaves - chance of sapling/apple or a leaves block - I don't mind either way.

I've searched for the solution and it seems people treat 'break' and 'destroy' synonymously, every result so far is about overwriting the block with minecraft:air - through /setblock, /fill, and other similar means. But that just replaces the block with the block of air, not producing the 'side effects' e.g. item drop, silverfish spawning, chest contents spilling.

One option I came up with would be something along the lines of /summon fireball [coords] {ExplosionPower:1,direction:[0.0,0.0,0.0]} but it seems 'ExplosionPower' regulates simultaneously explosion force and radius. Too weak won't break most blocks, too strong will cause a lot of collateral damage which I'd like to avoid; and while I could just spawn a cage of obsidian around the affected block (I can afford 1 block of space around the broken block to be used, destroyed or modified however needed), but I'd like obsidian to be on the list of breakable blocks too... It also very frequently destroys the drop which would otherwise survive normal breaking - this isn't a disqualifying problem, but it's still somewhat undesirable.

Also, spawning a piston and powering it up would break some blocks, but only some.

Java Edition, 1.13.2, PC.


/setblock <x> <y> <z> air destroy