The result leaves Manchester City in 4th place, still a point ahead of Manchester United in the race for a Champions League berth.
The Belgian was dismissed when, moments after being booked for a foul on Sergio Aguero, he tripped the Argentine and then, in clear view of referee Martin Atkinson, confronted him by pushing his forehead towards the City forward who fell.
City, who dominated most of the game, thought they had a late winner when Brazilian striker Gabriel Jesus, on as a late substitute for his first appearance since being injured in February, headed home from close range but was offside.
The result leaves City in fourth place, still a point - and a place - ahead of their local rivals in the race for a top-four finish and Champions League qualifying spot, and extends United's unbeaten run to 24 league games.
It was a frantic end to what had been a disappointing derby with injury-ravaged United largely restricted to trying to limit City’s forward movement and Pep Guardiola’s team unable to turn dominance with the ball into clear-cut opportunities.
The best chance for the home side came early. Striker Aguero, a pre-match injury doubt, should have opened the scoring in the ninth minute, missing a great chance when he turned a low Kevin De Bruyne cross against the post from close range.
City were on top in midfield but defensive frailties, which have hampered them this season, were evident in the 25th when Claudio Bravo flapped at a cross, palming the ball into the path of Henrikh Mkhitaryan before keeping out the Armenian’s shot.
The home pressure increased as the half progressed. De Bruyne's low shot was pushed away by David De Gea at the near post, Aguero forced a fine save from the Spaniard and Raheem Sterling blasted hurriedly over from a promising position.
United should, however, have reached halftime with the lead after City's defence somehow left Ander Herrera unmarked as Marcus Rashford whipped in a free-kick from the left but the Spanish midfielder could not get his header on target.
City remained on top after the break, attacking and shooting on sight, with the effervescent De Bruyne finding the side-netting with a low angled strike in the 58th minute.
Guardiola was forced to change his goalkeeper in the 80th minute when Bravo pulled up with a calf injury and was carried off on a stretcher to be replaced by Willy Caballero.
Then came Fellaini’s minute of madness, as he lost his cool and left the referee with no alternative but to send him off.
Sensing the chance of a late winner against 10-man United, Guardiola brought on Brazilian striker Gabriel Jesus, who has not played since breaking a metatarsal in his foot against
The move almost paid off when Jesus, who had been roared onto the field, superbly angled a header past De Gea from an Aguero cross and raced off in celebration.
But the effort was rightly ruled out for offside, leaving City frustrated and United a little relieved.