Claudio Marchisio had given the Italians a 35th minute lead drive into the bottom corner but Daniel Sturridge converted Wayne Rooney’s deep cross to the back post just two minutes later to equalise the match
Just five minutes into the second period, Balotelli headed home again.
The result leaves England in a desperate situation ahead of their next match against Uruguay.
Neither side can afford to lose that match and even a draw would leave them perhaps relying on other results to get through to the last 16.
“Italy were a very good team tonight and we fell a bit short,” said England captain Steven Gerrard.
“But we’re still very much alive in this group. “Italy were worthy winners with Andrea Pirlo almost putting some gloss on the result deep into injury time with a free-kick that crashed back off the bar.