It was the visitors who started the better of the sides, but with chances difficult to come by, Leon Andreasen wasted a good opening by firing over from the edge of the box.
Hoffenheim found the crucial goal on the half-hour mark as Kevin Volland drifted out wide to find space before delivering a cross for Schmid, who powered a header home.
The hosts took the confidence from the opener to dominate possession either side of the break, but a reluctance to commit many players forward relieved the pressure on Hannover.
Volland crossed to create the opportunity for Pirmin Schwegler, who could only send the ball wide under pressure in the six-yard box.
On a day when the two defences dominated for much of the game, Hoffenheim threatened to score a second late on with a powerful strike from Nadiem Amiri but Oliver Baumann tipped the shot wide to delay the inevitable as the hosts collected all three points.