<p>Since I started studying object-oriented programming, I frequently read articles/blogs saying  functions are better, or not all problems should be modeled as objects. From your personal programming adventures, when do you think a problem is better solved by OOP?</p>

I think it fits best when you are modeling something cohesive with state and associated actions on those states.  I guess that's kind of vague, but I'm not sure there is a perfect answer here.
The thing about OOP is that it lets you encapsulate and abstract data and information away, which is a real boon in building a large system.  You can do the same with other paradigms, but it seems OOP is especially helpful in this category.
It also kind of depends on the language you are using.  If it is a language with rich OOP support, you should probably use that to your advantage.  If it doesn't, then you may need to find other mechanisms to help break up the problem into smaller, easily testable pieces.