Recursion trips people up for one specific reason: it's genuinely hard to hold "a function calling itself, five layers deep, all still waiting" in your head at once. So don't hold it in your head, watch it happen. Every call, every wait, every return, one at a time, below.
factorial(5) doesn't compute anything by itself. It calls factorial(4) and waits. factorial(4) calls factorial(3) and waits. This keeps going until factorial(1) finally has a real answer, and only then does anything actually get multiplied, on the way back up.
Each of those boxes above is a real thing called a stack frame, and it holds specific information, not just "the function is running". Same factorial(5), same bottom-up stack, this time with every field labelled.
Factorial's calls form a single chain. Fibonacci's calls form a tree: computing fib(5) means calling fib(4) and fib(3), and each of those calls two more. Every circle below is one call, the number inside is which fib(N) that call is computing. Step through and watch for something specific: the exact same call appearing more than once.
fib(2) alone gets computed independently 3 separate times just within fib(5). By fib(30), that same sub-problem gets recomputed over half a million times, every single one recalculating something already solved moments earlier.
Same fib(5), same tree shape, same circles meaning the same thing as above, but this time, the moment a value has already been calculated once, it's simply looked up instead of recalculated. Watch entire branches get skipped in a single step.