Not long after, Cattermole - booed mercilessly by the home fans - collided with O'Neil in the box, referee Mike Dean booking the Boro man for exaggerating the contact.
Booked a minute earlier for a push on Julio Arca, Cattermole must have panicked when Afonso Alves went down under his challenge.
Dean instead showed the yellow card to Alves for diving, another decision backed up by television replays.
Boro's neat passing, meanwhile, continued to look tidy enough but chances were hard to come by, Kirkland saving Downing's daisy-cutter before seeing the England winger shoot just wide from the corner.
There was not much more excitement after the break.
We have lost our cutting edge - Bruce
Boro substitute Jeremie Aliadiere volleyed hopelessly wide from a good position, while at the other end, Michael Brown managed a little better, his effort flying only narrowly past the post.
While hardly impressive, Boro certainly did not deserve to lose so they would have been breathing a sigh of relief when substitute Hugo Rodallega sprung the offside trap but clipped his shot over the bar.
Boro managed one final push, O'Neil seeing his fierce shot stopped by Kirkland's knees, but the winless run goes on, and Gareth Southgate's men could even find themselves bottom of the table by the end of the weekend.
Middlesbrough boss Gareth Southgate: "Everyone is up for the fight.
"We know it'll be extremely tough. Everyone else thinks we're gone but there's a lot of football to be played.
"We're going to have to win matches people won't expect us to, but we're capable of doing that. We're not giving much away so we have a chance."
Wigan boss Steve Bruce on Cattermole's challenge: "Nobody wants to see anybody going off but unfortunately it happens.
"It was a perfectly good challenge. The crowd went up, and I have to compliment the referee who handled it very well.
And on the game: "We've lost a bit of our cutting edge with the changes we had to make in January. It's never easy to rebuild halfway through the season and it's going to to take a bit of time for us.
"All credit to the players, they've rolled up their sleeves again. Defensively we were terrific and the longer it went on, the more I thought we were going to nick it."
Middlesbrough: Jones, Hoyte, Wheater, Huth, Pogatetz, O'Neil, Digard (Walker 23), Arca (Aliadiere 52), Adam Johnson (Sanli 62), Downing, Alves.
Subs Not Used: Turnbull, Emnes, Bates, McMahon.
Bookmark with:
What are these?