While web development is not simple content management systems and webshops any more, most of our prinicples and ideas have not changed that much. CRUD and MVC, while still good ideas, are not meant for handling complex bussiness requirements, logic and workflows.
Instead of fat controllers or services, dependency injections, by separating our domain logic into simple "units of work" connected together by commands and events, number of files might increase but our complexity decreases considerably.
If you are looking for a different way, ES (eventsourcing) and CQRS (command query responsibility segregation) might be the solution. It's actually much harder to explain those concepts then to use them so I will start with simple examples from every day developer life and then combine all of it with real life examples from some of my projects.