How to Generate a list of Most Commented post?

Primary issue with your function is “get_template_part” internally use global $post variable to display the post fields. However, your $post variable is filled for this function only. I would suggest to read this handy article Displaying Posts Using a Custom Select Query

Now, specifically in your case

function lugaresincreibles_most_commented() {
    global $wpdb, $post; // make $post a global variable
    $pop = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}posts WHERE post_type="post" AND post_status="publish" ORDER BY comment_count DESC LIMIT 3");
    foreach($pop as $post) :
        setup_postdata( $post ); // set the post data.
        get_template_part( 'content', 'featured' );
    endforeach;
    wp_reset_postdata();
}