The Seagulls had lost in embarrassing fashion to a Walsall side that played with nine men for more than half of Saturday's league game between the two clubs, but Micky Adams' side were in inspired form against City.
Brighton started the game brightly and almost took a shock lead when Steve Thomson's shot struck the post and that proved to be the closest either side went to breaking the deadlock before the break.
City, without transfer deadline day signing Robinho, wasted several good chances to take to lead with Richard Dunne heading over the bar and Michael Johnson firing wide.
The Brazilian striker Jo was denied by Dutch keeper Michel Kuipers and Gelson Fernandes contrived to miss the target from Daniel Sturridge's cross.
However, Fernandes did eventually find the net in the 64th minute when Jo and Stephen Ireland combined to set him up.
Kuipers made superb saves to deny Ireland and Ched Evans before Glenn Murray fired past keeper Kasper Schmeichel after the youngster had parried Steve Thomson's 89th-minute effort.
The impressive and pacy Joe Anyinsah, on loan from Preston North End, fired the League One side ahead five minutes into extra-time but Ireland forced the game into a penalty shoot-out.
After seven successful spot-kicks, the impressive Kuipers saved from Michael Ball and Matt Richards scored the winner to ensure the Seagulls will play Derby County in the third round.