fetch_feed showing only first item

It looks like the problem is from this line return $title; inside the foreach loop.

Try something like this instead:

add_shortcode('custom_feed','feed2');
 function feed2(){
    $rss = fetch_feed( 'http://blog.sugarpulp.it/feed/' );
    $rss_items = $rss->get_items( 0, 3 );
    $out = array();
    foreach ( $rss_items as $item) {
        $out[] = $item->get_title();
    }
    return join( ' ', $out );
 }

using only a single return after the loop.

From the PHP manual on return :

If called from within a function, the return statement immediately
ends execution of the current function, and returns its argument as
the value of the function call.

You can read more about it here.