From the WP Codex for WP_Query:
Show Posts from Current Page
Display posts from current page:
$query = new WP_Query( ‘paged=’ . get_query_var( ‘page’ ) );
Pagination Note: You should set get_query_var( ‘page’ ); if you want your query to work with pagination. Since WordPress 3.0.2, you do get_query_var( ‘page’ ) instead of get_query_var( ‘paged’ ). The pagination parameter ‘paged’ for WP_Query() remains the same.
Changing the query var from ‘paged’ to ‘page’ will result in the following code:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<!--first content part-->
<?php endwhile; endif;?>
<?php
$paged = (get_query_var('page')) ? get_query_var('page') : 1;
query_posts('posts_per_page=3&paged='.$paged);
if (have_posts()) : while (have_posts()) : the_post(); ?>
<!--recent posts-->
<?php endwhile; endif; wp_reset_query();?>