Having missed last Friday's win over Bulgaria through suspension, Osvaldo was named on the bench for tonight's game at the Juventus Stadium in Turin.
The Azzurri trailed at the break with Libor Kozak giving the visitors a 19th-minute lead that forced head coach Cesare Prandelli to make a half-time change.
Osvaldo came on for Sunderland's Emanuele Giaccherini, and quickly helped his side turn their fortunes around.
Giorgio Chiellini equalised seven minutes into the second half, before a penalty from Mario Balotelli soon afterwards put the home side in charge.
Substitute Daniel Kolar was sent off for the Czech Republic in the closing stages as Italy held on for a crucial victory that finalised their place at the top of European qualifying Group B.
The Azzurri are the seventh side to qualify for next summer's finals in Brazil, along with countries including Maya Yoshida's Japan.
Earlier in the evening there was disappointment for Steven Davis, who captained a Northern Ireland side already all-but-out of qualifying contention when they took on Luxembourg.
Davis in action in Luxembourg tonight [Credit: Action Images/Paul Harding]
Martin Paterson put the visitors ahead after 14 minutes, only for Aurelien Joachin to level matters in first-half injury time.
Stefano Bensi then put Luxembourg in front on 78, but Gareth McAuley headed in to make it 2-2 soon afterwards. However, Mathias Janisch struck two minutes from time to consign Davis and his teammates to a demoralising defeat.
In other news, Saints youngster Lloyd Isgrove started for Wales Under-21s earlier in the day, playing the entirety of a goalless draw in Moldova.