Efe Sodje scored before later seeing red as Bury beat Exeter to reach the FA Cup second round.
The Shakers bossed the opening stages, and took a deserved lead when Sodje rose highest to head home David Worrall's cross at the back post.
Veteran defender Sodje was then sent off for a second bookable offence when he tugged back Alan Gow.
The Grecians almost made the man advantage count, but Gow's narrow miss was the closest they came to levelling.
VIEW FROM THE DRESSING ROOM
Bury manager Kevin Blackwell told BBC Radio Manchester:
"I thought we dominated the first half. We were bright, inventive and should have finished the game off.
"In the second half, they changed. We knew it was a cup game and things will change.
"We lost Efe, who was sent off, but we had a lot of youngsters there that put in a shift.
"Sometimes it's pretty and the sun's shining, and sometimes it's a cold, bleak day and you have to roll your sleeves up. I thought the lads did that very well today when they had to."
Exeter City manager Paul Tisdale told BBC Radio Devon:
"How we didn't get a goal I don't know, I'm very disappointed.
"It's hard to pick fault with anything we did in the second half - they played with a lot of freedom and a lot of fight.
"I think we have to do what everyone else does, I think we should have gone over a few times."
Live Text Commentary
Full Time The game is over, as the referee blows his whistle.90:00 +1:07
The referee blows for offside against Troy Hewitt. Craig Woodman takes the free kick.88:10
Shot from outside the box by Troy Hewitt hits the post.86:50
Dominic Poleon takes a shot. Artur Krysiak makes a save. Short corner worked by David Worrall.86:14
Alan Gow gives away a free kick for an unfair challenge on Matt Doherty. Mark Hughes takes the direct free kick.85:03 Substitution
Substitution Aaron Dawson replaces Kevin Amankwaah.83:09
David Worrall sends in a cross, clearance by Pat Baldwin. Steven Schumacher takes a inswinging corner from the left by-line to the near post, Danny Coles manages to make a clearance. Short corner taken by Steven Schumacher.82:18
Peter Sweeney takes a shot. Free kick awarded for an unfair challenge on David Worrall by Matt Oakley. Direct free kick taken by David Worrall.81:02
Peter Sweeney takes the direct free kick.81:02 Booking
Booking Caution for Pat Baldwin.80:54
Free kick awarded for a foul by Pat Baldwin on Troy Hewitt.79:17
The assistant referee flags for offside against Jamie Cureton. Free kick taken by Trevor Carson.78:31
David Worrall challenges Liam Sercombe unfairly and gives away a free kick. Free kick taken by Artur Krysiak.76:24
Alan Gow has an effort at goal from just outside the box which goes wide of the left-hand post.74:08
Matt Oakley fouled by David Worrall, the ref awards a free kick. Direct free kick taken by Matt Oakley.73:38
David Worrall concedes a free kick for a foul on Artur Krysiak. Artur Krysiak takes the free kick.72:15
The ball is crossed by David Worrall, Pat Baldwin makes a clearance.70:37
Dominic Poleon takes a shot. Danny Coles gets a block in.69:47
Free kick awarded for a foul by Scot Bennett on Steven Schumacher. Steven Schumacher takes the free kick.67:21
Free kick crossed right-footed by Alan Gow, clearance by Matt Doherty. Floated corner taken from the right by-line by Alan Gow.
Booking Joe Skarz goes into the book for unsporting behaviour.65:44
Liam Sercombe takes a shot. Adam Lockwood gets a block in. Inswinging corner taken left-footed by Alan Gow, Adam Lockwood manages to make a clearance. Alan Gow takes a shot. Save made by Trevor Carson. Free kick awarded for an unfair challenge on Kevin Amankwaah by Joe Skarz.64:54
Foul by Steven Schumacher on Alan Gow, free kick awarded. Danny Coles takes the direct free kick.63:30
Shot from a long way out by David Worrall goes wide of the left-hand upright.61:01 Substitution
Substitution Mark Hughes comes on in place of David Healy.61:01
Alan Gow produces a left-footed shot from long range that goes harmlessly over the bar.59:24
Danny Coles restarts play with the free kick.59:24 Dismissal
Dismissal Efetobore Sodje is shown a red card for second bookable offence.58:57
Free kick awarded for an unfair challenge on Alan Gow by Efetobore Sodje.56:50 Booking
Booking Booking for Adam Lockwood for unsporting behaviour.55:32
Alan Gow takes a shot. Save by Trevor Carson.54:07
Shot on goal by John O'Flynn from inside the box goes harmlessly over the target.52:13
Peter Sweeney concedes a free kick for a foul on Liam Sercombe. Pat Baldwin takes the direct free kick.50:22
The assistant referee flags for offside against Jamie Cureton. Trevor Carson takes the free kick.49:22
The ball is sent over by Peter Sweeney.48:50
Dominic Poleon takes a shot. Artur Krysiak makes a save. Peter Sweeney decides to take a short corner.48:13
John O'Flynn is caught offside. Trevor Carson takes the free kick.47:12
Free kick awarded for a foul by Dominic Poleon on Kevin Amankwaah. Direct free kick taken by Artur Krysiak.46:37
Centre by Alan Gow, comfortable save by Trevor Carson.45:01
The referee starts the second half.45:01 Substitution
Substitution (Exeter) makes a substitution, with John O'Flynn coming on for Steve Tully.45:00 +1:54 Half time
Half Time The whistle is blown to end the first half.45:00 +1:29
Shot from just outside the area by Steven Schumacher goes over the bar.45:00 +0:55
Corner taken left-footed by Peter Sweeney from the right by-line, Danny Coles makes a clearance.44:58
Liam Sercombe fouled by David Worrall, the ref awards a free kick. Free kick taken by Craig Woodman.40:43
Matt Doherty sends in a cross, Danny Coles manages to make a clearance.40:04
Danny Coles fouled by Troy Hewitt, the ref awards a free kick. Danny Coles takes the free kick.39:13
Dominic Poleon is caught offside. Free kick taken by Artur Krysiak.37:31
Danny Coles gives away a free kick for an unfair challenge on David Healy. Steven Schumacher crosses the ball from the free kick right-footed from right wing, Matt Oakley makes a clearance.34:33
Assist on the goal came from David Worrall.34:33 Goal scored
Goal! - Efetobore Sodje - Bury 1 - 0 Exeter Efetobore Sodje finds the back of the net with a headed goal from inside the box. Bury 1-0 Exeter.33:08
Troy Hewitt sends in a cross, Peter Sweeney makes a clearance. Peter Sweeney crosses the ball,27:39
Alan Gow produces a strike on goal direct from the free kick, save by Trevor Carson.27:39 Booking
Booking Efetobore Sodje goes into the book.27:24
Free kick awarded for a foul by Efetobore Sodje on Alan Gow.26:02
Corner taken by Peter Sweeney, comfortable save by Artur Krysiak.25:19
The offside flag is raised against David Worrall. Free kick taken by Artur Krysiak.23:19
Corner taken by Steven Schumacher, Effort on goal by Matt Doherty from inside the penalty area goes harmlessly over the bar.20:33
Free kick awarded for an unfair challenge on Dominic Poleon by Danny Coles. Steven Schumacher restarts play with the free kick.19:32
Corner taken by Steven Schumacher, clearance made by Scot Bennett.19:17
Centre by David Healy, Danny Coles manages to make a clearance.17:58
The referee blows for offside. Indirect free kick taken by Trevor Carson.17:10
Liam Sercombe delivers the ball, clearance made by Adam Lockwood. Inswinging corner taken right-footed by Liam Sercombe played to the near post, clearance made by Peter Sweeney.15:26
Free kick awarded for an unfair challenge on Alan Gow by Adam Lockwood. Strike on goal comes in from Alan Gow from the free kick.13:24
The assistant referee signals for offside against Jamie Cureton. Trevor Carson takes the indirect free kick.13:06
Free kick awarded for a foul by David Healy on Danny Coles. Pat Baldwin takes the direct free kick.12:23
Dominic Poleon is flagged offside by the assistant referee. Artur Krysiak takes the free kick.8:16
Troy Hewitt is caught offside. Free kick taken by Danny Coles.6:29
Dominic Poleon takes a shot.4:48
The offside flag is raised against David Worrall. Free kick taken by Craig Woodman.2:16
Peter Sweeney has an effort at goal from outside the penalty box which goes wide left of the goal.0:58
Dominic Poleon crosses the ball, Kevin Amankwaah makes a clearance.0:00
The game kicks-off.
Live data and text provided by our data suppliers