The only problem I have with your argument (and it is a very good point) is that, in Java at least, you still must have an object which derives from Object. Even if all the methods are declared static, the object still must derive from Object. This is true even in Perl. As long as you bless a reference, you derive from UNIVERSAL.
In the case of C++, I think that you are more correct. C++ only encourages OO but I am still impressed by the way it only really encourages Abstract Data Types (remember you can over load how operators work) rather than Objects (which lack the ability to act like data types). I realize that I may have to think about the differences between Abstract Data Types and Objects.