If everything is on time, and you only have carry on luggage, 3 hours is plenty. The question is, what will you do if it's not enough time?
What I did (arriving from the US in Rome, and getting a flight from Rome to Palermo on a separate ticket) was buy two tickets. One was 3 hours after my scheduled arrival, and one was 10 hours after. This way, I knew I'd use one and discard one, and the combined cost of the two advance purchase tickets was still less than a last minute ticket on that route for my date (a Monday, when fares were jumping). In the end, I made the three hour "connection" with time to spare, but of course that wasn't guaranteed.
So, look now at the price for the full fare, fully refundable ticket on your route. Look at all the airlines that fly this route (I know Ryanair and Alitalia do - not sure of others). If it's affordable, buying a last minute ticket can be your back up plan. If it's already very expensive, consider doing what I did.
Note that when I flew this in 2014, (so it could have changed in the interim), the Alitalia's International website https://www.alitalia.com/en_en/ had the same prices for domestic flights as their Italian website https://www.alitalia.com/en_it/. Their US website https://www.alitalia.com/en_us/ had much higher prices for these flights. Check all three to see which one is currently offering the best deal.