Question: Do we use cache memory in microcontrollers, if not, why not? If yes, what is its application in embedded systems or it is enough just to have RAM?

Answer: 
Cache memory adds a level of latency unpredictability that may be unwanted. A lot (most?) of microcontrollers are used in a realtime setting where you have to budget for worst-case timing. It does not matter if your code is fast *on average*, if there is a chance that it won't meet the deadline in *worst case*. Worst case would be that your code or data is not in the cache, and since you have to budget for it anyway, the cache just adds extra cost and complexity.

Some microcontrollers I have worked with has a small embedded SRAM that can be used as a "manual cache". You put stuff there that must have a low latency, be it code or data.

Now, the term "microcontroller" is becoming more and more bloated. Is the 8-core ARM processor in your phone a microcontroller? If so, then yes, of course it should have a cache.
Above a certain speed, fast memory costs more per byte than slow memory (below that speed, making memory slower won't make it any cheaper). If a system has a large amount of memory, having most of it be slow but then including a cache of fast memory and the logic to run it will be cheaper than making all of the memory fast. If the system doesn't run very fast, however, memory which can keep up with the system won't cost more than slower memory, so there's no reason not to have all the memory be fast enough to keep up with the system. If the system is fast but doesn't have much memory, the cost savings from making the bulk of the memory slow won't be sufficient to justify the cost of adding a cache.

Many microcontrollers have a flash interface which can fetch multiple bytes at once into a buffer; while this might be viewed as a sort of cache, in many cases it won't be an addressable memory, since each bit of the buffer will only be able to take data from a single source [a bit line from the flash array].