After a frenetic start, Declan Rice found himself in the referee’s book with less than eight minutes gone.
The West Ham midfielder fouled Leon Goretzka as he looked to march into the area, earning him a yellow card from Dutch referee Danny Makkelie. The resulting free-kick was thundered into the wall by Kai Havertz.
Sterling then forced a fine save out of Germany captain Manuel Neuer with a strike from long range.
Southgate’s men were now creating the better chances but Harry Maguire could only head over the crossbar from a Kieran Trippier cross.
Jordan Pickford was forced into his first meaningful save just after the half-hour as Timo Werner broke into the box but saw his effort smothered by the England keeper.
An entertaining first half came to an end with England almost breaking the deadlock. Sterling burst clear into the box and the ball fell to Kane, whose heavy touch allowed the German backline to recover and clear moments.
Pickford made another fine stop as he tipped a Havertz piledriver over his bar after the break.
Southgate turned to his bench and introduced Grealish in place of Saka with a little under a quarter of the game remaining. England broke the deadlock soon afterwards with Sterling once again the man on target.
He started the move, playing the ball into Kane, who passed out wide to Grealish and he found Luke Shaw, with the full-back’s low cross turned home by Sterling.
Germany should have been level soon afterwards when Sterling presented the ball to Havertz, who passed to Muller, only for the striker man to shoot narrowly wide.
It would be England celebrating again with five minutes left as Kane broke his duck for the tournament with a fine header.
Manchester United full-back Shaw won the ball and burst forward, playing in Grealish, whose cross was headed home by the under-fire Three Lions skipper.