Paradigms don’t solve each other’s problems. They’re just another approach that may be better in specific contexts and you can even mix them. Although today, some languages is veering towards using structs and the like for data models and classes as logic containers (swift, kotlin).
As for huge codebases, everyone knows that line of codes does not equal quality.
And also, can you give me a huge non-OOP codebase that shows in practice how it is better than the potential OOP implementation?