The ribbon didn't replace rows and rows of small icons without labels. It replaced a hierarchical menu. Now, did the hierarchical menu have flaws? It did, insofar as it was rather forbidding to explore, and as a result, new users had trouble finding functionality by clicking around. That was the use case that the Ribbon sought to address.
What the designers of the ribbon did not understand was that users have other ways to find functionality. They could look up functionality on the Internet. There were even physical books which told you which specific menu to click on for a particular function.
What the ribbon did was instantly render all those resources useless. Moreover, by attempting to constantly surface different controls based upon the context of the current task, the ribbon made it extremely difficult to make new resources and tutorials. You could make a tutorial with screenshots, only to have users come to you with screens that look nothing like your screenshot, because they just happened to be highlighting a slightly different element.