Man City dominated the contest for long stages, but 10-man Man United produced an excellent defensive performance as the Red Devils continued their unbeaten run in the league, which now stands at 24 matches.
The big team news for Man City was the absence of David Silva, who missed out with a hamstring problem, but Sergio Aguero and Fernandinho were both fit, while Pablo Zabaleta and Aleksandar Kolarov came into the back four.
As for Man United, Paul Pogba's absence meant that there was a spot in midfield for Michael Carrick, who captained the Red Devils, while Anthony Martial was given the nod alongside Marcus Rashford and Henrikh Mkhitaryan in the final third.
It was the visitors that made the brighter start in Manchester, and a dangerous Ander Herrera cross had to be dealt with by Zabaleta in the third minute as Fellaini threatened to send Jose Mourinho's side ahead at the far post.
Man City had the first serious opportunity of the match in the ninth minute when Aguero met a low Kevin De Bruyne cross from the right, but the Argentine's close-range effort somehow struck the outside of the post with David de Gea stranded.
The home side then had a half-chance in the 17th minute when De Bruyne delivered a stunning cross into the Man United box, but there were no takers on the ball from the Belgian, which deceived Mourinho's defence.
De Bruyne had a sight of goal three minutes later after finding some space in the final third of the field, but the attacker's effort was always comfortable for De Gea, before Claudio Bravo kept out a close-range effort from Mkhitaryan down the other end after the Man City goalkeeper had bizarrely palmed a Martial cross straight into his own box.
Man City had another half-chance on the half-hour mark when Kolarov delivered a stunning cross towards the far post after Man United had failed to clear their lines, but Aguero just could not react in time.
Aguero then tried his luck from distance after working some space in the final third of the field, but a diving save from De Gea kept the score level, before Man City's Argentine striker missed the crossbar with a rasping effort 10 minutes before the half-time interval.
Kolarov was next to come close for Man City, but the left-back found De Gea in fine form once again as Spain's number one turned the ball wide of the post to keep the score level approaching the latter stages of the first period.
Herrera had a glorious chance to send Man United ahead in the final minute of the first half when he met an excellent free kick from Rashford, but the Spanish midfielder somehow headed wide of the post as the pair entered the break at 0-0.
It was Man City that had the first shot on target in the second period when Sterling danced past a number of challenges before attempting to beat De Gea from a tight angle, but the Spaniard made another smart save, before the Man United goalkeeper kept out a strike from Aguero in the 49th minute.
It was the home side that continued to look the more likely to make the breakthrough at the Etihad Stadium, although Man United were a threat when they managed to feed Rashford in a forward position.
A rasping strike from De Bruyne just before the hour led to some Man City supporters rising to their feet, but it was the side-netting that the Belgian international found with his effort from distance.
A super cross from Sterling threatened to find the head of Sane inside the Man United box in the 64th minute, but the German international could not make contact as the derby remained goalless.
The pressure from Man City continued as the match headed for its final 20 minutes, and only a super defensive header from Eric Bailly prevented Nicolas Otamendi from heading the home side ahead from close range in the 67th minute.
De Bruyne struck one over the Man United crossbar in the 74th minute as the pressure from the home side continued, but there was a lull in proceedings 10 minutes from time when Bravo pulled his calf, which led to Wilfredo Caballero being introduced between the sticks.
Jesus Navas and Jesse Lingard followed Caballero onto the field as both managers made attacking changes, but Man United were forced to finish the game with 10 men when Fellaini was handed a straight red card for an apparent headbutt on Aguero in the 84th minute.
Man City thought that they had taken the lead in the 91st minute when Jesus headed home from close range, but the offside flag stopped the home side's celebrations.
Aguero had a wonderful chance to win the game in the sixth minute of additional time after meeting a deep cross from De Bruyne, but the Argentine's effort was away from goal as the points were shared, which ensured that Man City and Man United stayed fourth and fifth in the Premier League table.
Next up for Man City is a trip to Middlesbrough on Sunday, while Man United will host Swansea City on the same afternoon as the pair continue their pursuit of third-placed Liverpool.