With qualification to the knockout stages of the Champions League already confirmed, Man City expectantly rested a few key players.
In their final group stage fixture, City made a slow start by sizing out the opponents every move first in both defence and attack.
Hoffenheim started promisingly despite being eliminated with no chance of a Europa League spot. Their main threat centred down the left wing, with Andrej Kramaric scuffing a first-time shot over.
The visitors sprung in front from the penalty spot when Kramaric converted past Ederson after being awarded the place-kick following a foul inside the box.
A corner from Leroy Sane brought in Gabriel Jesus inside the box, but he could only rattle the post inside 18 minutes.
The trailing sequence fired up the Citizens to push on for the equaliser by carving out a few decent openings.
The halfway stage presented a good opportunity for John Stones to get in on the act, but Oliver Baumann came to his side’s aid with a good save.
The tie was back level again courtesy of a stunning 30-metre free-kick from Sane finding the top corner to give Baumann no chance on the stroke of halftime.
City started the second half strong, forcing Baumann to successive saves from an Aymeric Laporte downward header and again from the very same sequence and fashion.
A charge down from outside the box by Raheem Sterling saw him unselfishly picked out Sane but neither he nor Bernardo Silva was able to finish off the move.
Sane completed his second after combining with Sterling to go and round Baumann to slot into an empty net.
Wonderful technique from Phil Foden after meeting a volley seemed destined to hit the roof of the net, but Baumann made a good stop.
In the end, the Citizens march on to top Group F heading ahead of Monday's knockout stages draw.