It was a sixth win in eight meetings for the Merseysiders against City, whose prospects nosedived before kick-off when it emerged talisman Yaya Toure had been ruled out after suffering a migraine.
City thought they had been punished for a slow start when Kevin Mirallas lashed the ball into the net after Osman returned a clearance into the visitors' box. Much to City's relief, a flag had been raised for offside but replays suggested the decision was an extremely harsh one.
Osman fired the Toffees ahead when he took a square ball from Seamus Coleman 25 yards out and struck a first-time shot which swerved viciously away from Joe Hart.
The visitors remained second best and they were stretched again when Hart could only palm a Coleman cross as far as Mirallas but the Belgian's header was deflected over.
Everton went close again when Osman had a volley deflected over from a corner and the feisty atmosphere of the first half returned when Steven Pienaar caught Javi Garcia and was shown his second yellow card.
City almost broke through when Carlos Tevez stretched to volley an Edin Dzeko ball at Mucha. The ball rolled invitingly across goal for James Milner but Mucha recovered quickly and threw his body in the way as the England man looked certain to equalise.
City pieced together another good move but Mucha again spread himself well to deny Pablo Zabaleta after David Silva had found him in space on the right.
City continued to press and had an opportunity when a Tevez shot struck Marouane Fellaini's arm in the box, but a free-kick outside the area was awarded and Aleksandar Kolarov struck the wall.
Everton rode out the storm and broke away in injury time through Fellaini, who rolled wide for Jelavic to beat Hart with a deflected shot.