How to prevent parent admin page from appearring as a child admin page

Unless I misunderstand the question, this should do the trick:

add_action('admin_menu', 'add_menu_pages');

function add_menu_pages() {
    add_menu_page('Menu Title', 'Menu Title', 10, 'main_menu', 'submenu_1_callback');
    add_submenu_page('main_menu', 'Sub Menu Title 1', 'Sub Menu Title 1', 10,  'main_menu' , 'submenu_1_callback');
    add_submenu_page('main_menu', 'Sub Menu Title 2', 'Sub Menu Title 2', 10, 'sub_menu' , 'submenu_2_callback');
}

function submenu_1_callback() {
    echo "<h2>" . __( 'Toplevel & Sublevel 1', 'menu-test' ) . "</h2>";
}

function submenu_2_callback() {
    echo "<h2>" . __( 'Sublevel 2', 'menu-test' ) . "</h2>";
}

EDIT:

Here’s the easiest way to hide the first sub-menu item.

1) Create admin.css and move it to /[your template dir]/css/

2) Add this to your admin.css:

#adminmenu li#toplevel_page_main_menu li.wp-first-item {
    display: none !important;
}

3) Add the following code to your functions.php

add_action('admin_enqueue_scripts', 'custom_admin_css');
function custom_admin_css() {
    wp_enqueue_style( 'admin_css', (get_template_directory_uri() . '/css/admin.css'), false, '1.0.0' );
}