David Weir's scrambled early goal gave Everton victory and extended their unbeaten run to nine games.
Weir celebrates Everton's opener with Cahill and Beattie
The Scot bundled home from Mikel Arteta's corner after eight minutes to give Everton a deserved advantage.
Everton dominated the first half, but failed to kill the game off and allowed City to stay in the hunt.
City's £6m new boy Georgios Samaras wasted their best chance when he headed over, and Stephen Jordan was sent off late on for two bookable offences.
Everton were able to recall Beattie after a two-match absence with a calf injury, while Manchester City dropped Andy Cole to give Samaras his full debut.
David Moyes' side were full of confidence as they attempted to extend their recent excellent run of form.
And Leon Osman almost gave Everton the lead inside two minutes, surging forward before clipping the bar from 20 yards.
But Everton did not have to wait long for an opener, Weir scrambling in from close range from Arteta's corner, although Beattie may also claim the goal.
City were second best all over the pitch, but they mounted a threat towards the end of the first half, with Kiki Musampa shooting wide and Darius Vassell off target with a header following good work from Sun Jihai.
Samaras had shown little to justify his hefty price tag, and he wasted City's best chance on the hour when he headed Joey Barton's corner over the top from six yards.
City were sensing an equaliser, and boss Stuart Pearce sent on Cole for Albert Riera seconds later.
Musampa then squandered another opportunity when he shot straight at Richard Wright from the edge of the area.
Everton were living on their nerves after failing to make their early supremacy pay, and they were fortunate to survive another goalmouth scramble as City pressed again.
Beattie was working hard as Everton attempted to regain control, and he saw a long-range shot saved by David James.
Jordan's frustration then got the better of him and he was sent off for a second yellow card with a minute to go, fouling Tony Hibbert after earlier being booked for bringing down Arteta.
Everton manager David Moyes:
"The players were determined to keep the run going. We have not shouted too much about it, but that's nine games unbeaten.
"It has been terrific and the players have been doing really well. They are showing a lot of confidence.
"They have got a great team spirit. I have a had a lot of bad Saturday nights, but I'm beginning to enjoy my Saturdays again.
"We said we would keep doing the things we felt were right. I never thought that a team that finished fourth last season had suddenly turned into a team that was struggling.
"We would like to get the second goal to make life easier for ourselves, but the lads at the back have done terrifically well."
Manchester City manager Stuart Pearce:
"We have got a hang-up on the road at the minute. We didn't get out of the traps - and they were told because you have to get out of the traps and scrap against Everton.
"We have to be a bit more hard-nosed on our travels. Everton were a touch more consistent in what they were trying to achieve.
"We haven't done well away from home, but seeing as 50% of our fixtures are away from home it means we are giving ourselves a mountain to climb.
"It is something we are going to have to look at."
Everton: Wright, Hibbert, Weir, Stubbs, Nuno Valente, Osman (Davies 82), Neville, Arteta, Kilbane, Cahill, Beattie (McFadden 80).
Subs Not Used: Turner, Naysmith, Anichebe.
Goals: Weir 8.
Man City: James, Jihai, Dunne, Distin, Jordan, Sinclair, Barton, Musampa, Riera (Cole 60), Vassell (Wright-Phillips 77), Samaras (Sibierski 77).
Subs Not Used: Weaver, Richards.
Sent Off: Jordan (90).
Booked: Jordan, Barton, Dunne.
Ref: A Marriner (W Midlands).