Nice game! Just a couple thoughts I had looking at it:
3... Bf5 is not good because of 4. Qb3 (or 4. cxd5 cxd5 5. Qb3) when your pawns are forked and there's no way to defend both of them; you'll have to give up one, and you won't get enough compensation for it.
The reason why Stockfish recommends 11... e5 is because white is also trying to push his e-pawn! After 11... b6 white can achieve best results by simply taking and then pushing with 12. cxb6 axb6 13. e4 when the position is roughly equal. By immediately playing 11... e5, you prevent white from easily playing e4.
14... Nxe5! would've been better because it's more forcing and prevents your opponent from playing 15. exd5 (although your opponent missed that idea anyway, so I guess it didn't really matter in the end).
Otherwise, the game was pretty well-played; your endgame was good and after 27... Raxa4 you had basically won it already. Nice job analyzing it and sharing your thoughts, too!
I just want to share a slow chess OTB game i played recently in a tournament where i feel i made logical moves and slowly outplayed my opponent by improving my position bit by bit until he started to make mistakes out of frustration. I tried to explain my thought process throughout the game.