How to order by multiple fields using standard query_posts?

If you’re altering the main query, always use pre_get_posts to alter query parameters before the query is run and before the template is loaded. This will be the most efficient and will not break pagination. As of v4, orderby accepts an array of arguments, which gives you the ability to have different order for each if necessary:

function my_get_posts( $query ){
    if( !is_admin() && $query->is_category() && $query->is_main_query() ){
        $query->set( 'posts_per_page', -1 ); // show all posts
        $query->set( 'orderby', array('menu_order' => 'ASC', 'title' => 'ASC') );
    }
}
add_action( 'pre_get_posts', 'my_get_posts' );