Needing victory to make sure of finishing in the top two of Group C, Defoe struck midway through the first half at Nelson Mandela Bay Stadium and Fabio Capello's men held on despite a few second-half scares.
It was the result they needed after reports of unrest within the camp following draws in their two opening games.
Prior to the game Capello had faced a call from John Terry to include Joe Cole in the starting line-up but he decided the leave the midfielder on the bench.
Matthew Upson replaced suspended Jamie Carragher from the side that drew against Algeria and there were two other changes to Capello's team.
James Milner and Defoe were drafted in and the pair combined for the opener in the 22nd minute.
Milner received the ball on the right flank and curled an inviting cross that Defoe powered into the roof of the net.
The goal calmed England players after a nervous start where David James was forced into a save when Milivoje Novakovic met a corner.
But immediately after Defoe's strike, his 12th for his country, England looked like adding to the scoreline. Frank Lampard fired over when another fine Milner cross came in, then Steven Gerrard forced a decent save from Samir Handanovic after Wayne Rooney laid on a chance.
England also had plenty of chances to add to their lead after the interval, with Defoe flicking wide after a quick corner just 30 seconds after kick-off.
Terry forced a near-post save from Handanovic after meeting Gareth Barry's deep corner, then Rooney hit the post when Lampard broke the offside and sent him through.
It was Rooney's first big chance of the tournament and he saw his finish get the slightest of touches from Handanovic before it cannoned off the upright to safety.
After riding their luck, Slovenia had a real chance to level. The ball broke for Novakovic and then
Zlatko Dedic in the penalty area but Terry and Glen Johnson bravely blocked.
Rooney was limping after a challenge and Capello brought on midfielder Cole for the last 18 minutes, with England hanging on for victory, helped by Upson's last-ditch challenge on Tim Matavz.
Slovenia: (4-4-2) S Handanovic; Brecko, Suler, Cesar, Jokic; Birsa, Koren, Kirm (Matavz 79), Radosavljevic; Ljubijankic (Dedic 62), Novakovic.
Subs (not used): Dzinic, Ilic, J Handanovic, Krhin, Seliga, Filekovic, Komac, Stevanovic, Mavric.
England (4-4-2): James; Johnson, Upson, Terry, A Cole; Milner, Barry, Lampard, Gerrard; Defoe (Heskey 85), Rooney (J Cole 72).
Subs (not used): Green, Hart, Warnock, Dawson, Carrick, Lennon, Wright-Phillips, J Cole, Crouch.