Italy put a scandal-ridden week behind them to beat Malta 4-0 in their European Championship qualifier.
Giacomo Bonaventura set Italy on its way with his first goal for the Azzurris and Domenico Berardi ended his goal drought in style with a goal in each half. Substitute Davide Frattesi netted in stoppage time to continue his scoring streak.
Italy moved within three points of Group C leaders England, who they play on Tuesday at Wembley. Ukraine, who have played one more match, were level on points with Italy after beating North Macedonia 2-0.
North Macedonia had been level on points with Ukraine heading into the match in Prague. Georgiy Sudakov opened the scoring in the 30th minute and Oleksandr Karavaiev sealed the match in stoppage time, shortly after coming off the bench.
Italy's preparations for the match in Bari had been interrupted midweek when police questioned Sandro Tonali and Nicolo Zaniolo at the national team's Coverciano training centre in a betting investigation. The Premier League players later left the camp.
Italy were also hit by injuries so Bonaventura made his first Azzurri appearance in three years and he became the oldest player to score his first goal for the national team when he broke the deadlock in the 25th minute. Moise Kean tried to dribble into the area but he was blocked and the ball fell to Bonaventura for a magnificent curled effort into the top right corner.
It was the 34-year-old's first Italy goal, in his 15th appearance for his country.
Berardi had already scored six goals for Italy but hadn't found the back of the net in more than two years. He ended that on the stroke of half time with an effort that went in off the inside of the far post.
And Berardi doubled his tally in the 64th minute following a move that was started by goalkeeper Gianluigi Donnarumma. Giacomo Raspadori crossed the ball from the left and Kean missed it but it came through for Berardi to rush onto at the back post.
Frattesi came on a minute later and went on to score his third goal in his last two matches for his country to cap a morale-boosting win for Italy, although the Azzurri will be expecting a sterner test against England.
Lithuania stay in hunt
Pijus Sirvys netted twice to help Lithuania win 2-0 at Bulgaria in Group G.
Both teams needed a win to stay in contention for an automatic qualifying position but Sirvys scored either side of half time to end Bulgaria's hopes.
Fourth-placed Lithuania still have a mountain to climb. They are eight points behind leaders Hungary and five below second-place Serbia. Montenegro have three more points than Lithuania.
Hungary moved solo atop the group with a 2-1 win over Serbia, having played a match less than their opponent.
In the 33rd, Serbia defender Strahinja Pavlovic cancelled out Barnabas Varga's opener but Roland Sallai restored Hungary's lead a minute later.
Slovenia and Denmark both won again to maintain their tight fight for the top spot in Group H. Slovenia beat Finland 3-0, while Denmark saw off Kazakhstan 3-1.
There has been little to separate both teams which are level on 16 points. Both have also conceded six goals in seven matches, with Slovenia having scored one more than Denmark.
The first tie-breaker is head-to-head results. They drew 1-1 when they met in Slovenia in June. They play again in Denmark next month. Neither team has secured qualification yet from the six-team group.
Finland and Kazakhstan are four points behind and six above Northern Ireland, which beat San Marino 3-0.