Roberto Mancini's men were far from their fluent best at Stadio Olimpico, appearing devoid of craft against an often-packed Greece defence, but a pair of second-half goals ensured they did enough to make sure of a top-two finish in Group J.
The victory extended a strong qualification campaign, giving Italy a seventh successive victory.
Unsurprisingly, Greece set up to frustrate Italy and certainly achieved that goal in the first half, with the Azzurri crafting few notable opportunities in a dour opening 45 minutes.
But a combination of Italy's determination and a defensive blunder from Andreas Bouchalakis in the second period allowed Jorginho to convert a penalty and substitute Bernardeschi wrapped the win up late on.
Italy generally dominated a largely forgettable first half in Rome, although its control of possession was not reflected in the number of chances forged, as Alexandros Paschalakis in the Greece goal was little more than a spectator.
While Gianluigi Donnarumma was by no means busy at the other end, his reflex save to palm away Dimitris Limnios's effort in the 12th minute was vital.
Italy then suffered the blow of losing Federico Chiesa to an apparent muscle injury just before the interval.
But the hosts' first attempt on target came from a cross courtesy of Chiesa's replacement, as Bernardeschi's delivery found Ciro Immobile and his header was tipped around the post by Paschalakis.
The goalkeeper was helpless just past the hour, Jorginho dispatching a penalty with typical composure after Bouchalakis blatantly blocked Lorenzo Insigne's shot with his arm.
Bernardeschi ended Greece's hopes of a late fightback, finding the bottom-left corner from distance with 12 minutes to go.