If done right, code becomes more reusable. Developers learn how to write components which can be wired differently for multiple situations and can then be reused. Without a DI, code reusability just doesn't happen as easy as with DI.
Testability can be increased easier, as components can be wired with Mocks very easily. The testability and maintenance of hard-wired legacy software can become a nightmare. We did that on a medium-sized SOA landscape: migrating to Spring DI Framework to enable testability for small components, piece by piece. With DI, the maintainability was much better.
Configuration becomes more obvious in a central place, stuff like number of maximum threads, database connection settings, debug switches etc. They're all simple setter methods and configured in the DI container.
What might be a business case, dependending on the type of software you're developing, is that with a DI container, you may be able to switch implementations at runtime. This is a bit exotic, but comes in handy once understood where to apply it.
Another thing is that, looking specifically at the Spring Framework, the high-quality of the framework itself and the coding style used there, people started to learn how to write better code. That alone is worth it. Monkey see, Monkey learn, Monkey do.
Using a DI framework is an architectural decision, but also goes down to the coding guidelines. New people joining your team will have it a little bit easier to understand your software. A Dependency Injection framework will get new collegues faster up-to-speed.