Disclaimer: Neither do I have much practical experience doing path following in more complex scenarios.
Instead of dumbly going straight to the target node, you can use steering behaviors to tend to go towards that position but avoiding obstacles.
I think this approach can fall short when the agent has been pushed off his course far enough to end up behind a wall whereas his target position resides exactly on the opposite side of that wall -> steering forces would eventually cancel out each other. And worse: he could then start sliding himself into a dead-end while still trying to reach the target position and avoiding that wall.
Here's what I would try to experiement with: apply a slightly modified Funnel algorithm on a more local basis while moving. You could pass in the target point where your agent intends to steer towards to, then let the algorithm figure out a point that lies withing a valid funnel. If the figured-out point happens to be your target point, just steer straight towards it as your agent won't go off the navmesh. Otherwise, scale the direction from your agent to that point by some amont representing your intended steering force, and move towards that point. Repeat while moving.
Does that make sense?