If your views start doing things like
<% foreach (var order in Model.Orders.Any(x => x.Products.Any(p => p.Category == "xx")) %>
then you definitely need ViewModel. You can go with
ViewData["flattened_orders"]
if you prefer magic strings, but I doubt so.
Then, there's a question of presentation attributes needed on your entities, then you need to expose all properties on them so that model binder can work... then you need additional presentation-only information like list of countries...
So, for simple applications, you may skip ViewModel. But for simple applications you can do Response.Write and manual SQL, anyway ;-)
I actually like this post about similar issue. The approach represented there might seem too "academic" at first, but it is from real projects, and the more I do ASP.NET MVC, the more I like it and get closer to it.