After a sluggish start, West Ham finally came to life around the 15 minute mark and began to test Jones, with Mark Noble and David di Michele both drawing good saves from the Australian.
Then, against the run of play, Boro went ahead.
O'Neil's cross from the right eluded both James Collins and Matthew Upson and bounced perfectly for Downing to head the ball past the stranded Robert Green.
The loss of Carlton Cole to an ankle injury further frustrated the home side, and they were forced into another reshuffle early in the second half when Luis Boa Morte took a bang in the face and was replaced by Freddie Sears.
Alves had a good chance to make it 2-0 to Boro when O'Neil's through-ball sliced the West Ham defence in half but he put his shot just wide of Green's far post, and this near-miss seemed to lift the tempo of the match.
Downing nearly grabbed his second goal of the game when he tested Green from long range, shortly before di Michele infuriated the home fans when he ballooned Ilunga's cross over from close range.
Time was running out and the home crowd were becoming increasingly frustrated when Noble's replacement Savio sent over a cross which eluded everyone and bounced up perfectly for Ilunga to head home and earn a replay at the Riverside on 24 February.
West Ham manager Gianfranco Zola:
"The first 50 minutes was the worst we have played recently. It was not near our standards. After that we picked up a bit.
"It's a good lesson for us. Three months ago we would have lost that game so I am pleased because the players showed we did not want to lose."
Middlesbrough manager Gareth Southgate:
"I was pleased with how we played, the quality was good and I was pleased how we opened them up. We will take more from it than the result itself.
"We got ourselves in enough good situations but that has been the story of the season for us.
"We are at our best when we pass and play football and that's what we were doing today - the players will take great confidence from that."
Green, Neill, Collins, Upson, Ilunga, Collison, Parker, Noble (Nsereko 74), Boa Morte (Sears 49), Di Michele, Cole (Tristan 33). Subs Not Used: Lastuvka, Lopez, Kovac, Spector.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.