Jon-Paul Pittman's first goal in 10 months helped Oxford beat Northampton for their first league win of November.
The U's went ahead with a James Constable tap-in and they could have led by more with Sean Rigg and Jake Forster-Caskey hitting the woodwork.
Clive Platt's header from Chris Hackett's cross put Town on level terms but three minutes later Pittman blasted home from Peter Leven's ball.
Town had Clarke Carlisle sent off late on for a second booking.
VIEW FROM THE DRESSING ROOM
Northampton Town manager Aidy Boothroyd told BBC Radio Northampton:
"I thought Oxford started much better than we did but we always think we can score a goal.
"They couldn't handle Clive Platt. Once we got that momentum, I genuinely thought we were going to win that game.
"Possession is great but I didn't think we got enough bodies in the box and I don't think we were incisive enough.
"I think we missed Joe Widdowson today but I was pleased with Danny East's contribution, playing out of position."
Oxford United 01 Clarke 04 Raynes 06 Wright 16 Whing 17 Capaldi Booked 14 Rigg (Worley - 83' ) 18 Forster-Caskey Booked (Pittman - 56' ) 19 Cox 20 Leven 09 Constable 15 Potter Substitutes 21 Brown 22 Worley 23 O'Brien 07 Chapman 08 Heslop 26 Davis 11 Pittman Northampton 21 Nicholls 05 Langmead Booked 12 Tozer 23 East 30 Carlisle Dismissed after an earlier booking 07 Demontagnac Booked (Platt - 61' ) 08 Harding 11 Hackett 22 Hornby 10 Akinfenwa 17 Robinson Booked Substitutes 13 Snedker 06 Charles 28 Huws 09 Platt 15 Mukendi 19 Moult