require_once(ABSPATH .'/wp-admin/includes/file.php');
global $wp_filesystem;
if ( ! $filesystem ) {
WP_Filesystem();
if ( ! $wp_filesystem )
nuke_the_world_because_wpfs_cannot_be_initialized_in_case_of_missing_arguments('!');
}
$result = unzip_file( $zip, $dest );
if ( is_wp_error( $result ) )
nuke_the_world();
Maybe some error handling make it easier.