The hosts were on course to upset the odds - as they had done in Porto when they claimed a 1-1 draw in their previous Group F meeting - after Gareth McAuley and Jamie Ward netted following Bruno Alves' opener for the 10-man visitors, who had Helder Postiga sent off just before half-time.
However, Brunt saw red on the hour mark before Cristiano Ronaldo stole the show with a fantastic second-half hat-trick to give Portugal a 4-2 win at Windsor Park.
Lafferty was also dismissed with the score at 3-2 10 minutes from time and O'Neill admitted that was a hammer blow to their hopes of upsetting the Group F leaders.
"I thought up until 60 minutes and Chris Brunt's sending off, we were the better team and in control of the game," O'Neill told Sky Sports.
"I thought they scored against the run of play and we responded well to that having gone into our shell a little bit.
"But then obviously the second sending off left us that man short and subsequently we weren't able to deal with that.
"You take the performance of the team, particularly for 60-65 minutes, I thought the energy and the shape of the team was very good.
"We were playing here against one of the top sides in Europe and people have to recognise that."
Real Madrid forward Ronaldo had his revenge on the Northern Ireland side that spoiled the occasion of his 100th cap last October with a phenomenal display to keep Portugal top of the group ahead of Russia.
"Certainly at the end of the day he showed his class tonight," added O'Neill.
"On the night we're disappointed we've got ourselves into a winning position and circumstances conspired against us."