Steve Bruce's men delivered a dismal first-half display against play-off chasing Derby, prompting the introduction of Gedo, a recent loan signing from Al Ahly, and Nick Proschwitz at the break.
Gedo, who also came off the bench against Brighton at the weekend, headed Hull in front within 90 seconds of his half-time arrival.
However, after both sides had struck the woodwork, Jamie Ward looked to have rescued a point for the Rams when he capitalised on an error from City goalkeeper David Stockdale to level with six minutes remaining.
There was still time for Elmohamady to have the final say with a downward header from Robbie Brady's corner, and Derby finished with 10 men following Gareth Roberts' 89th-minute dismissal for a late tackle on Proschwitz.
Hull made a desperately slow start, enabling the visitors to enjoy the better of a forgettable opening period.
Conor Sammon spurned a good chance to fire Derby ahead in the eighth minute, poking wide from inside the area following good interplay with Ward and Paul Coutts.
Hull did not have to wait long for a goal after the interval as Gedo, brought on with Proschwitz in place of Koren and Jay Simpson, met Brady's pinpoint centre with a firm nod back across Legzdins.
The substitute soon went close again, volleying over from Elmohamady's cross as the game belatedly sparked into life.
Hull's David Meyler then saw a shot deflect on to the upright, before Sammon struck the underside of the bar for Derby, having been played in by Ward's clever chipped pass.
A goalbound effort from Ward almost ricocheted in off Sammon moments later, but the former's luck changed when Stockdale failed to gather Bryson's left-wing cross, leaving a simple chance that was gratefully taken.
Hull's disappointment was short-lived as Elmohamady converted Brady's 87th-minute corner. Proschwitz then missed an open goal in injury-time following Roberts' straight red card.