The midielder will join up with his new team-mates on July 1 when his contract at Sunderland expires, with the club initially trying to sign him during the January transfer window
The 27-year-old had been at the Stadium of Light since 2011 but will move to West Brom in the close-season - who have an option of keeping him for a further year.
Director of football administration Richard Garlick explained the club's delight at signing the 27-year-old, having missed out on his signature in January.
"Craig is someone we have followed for a long time and we are delighted to finally get him," he told the club's official website. "We tried to bring him here in the January transfer window but it did not work out.
"We have continued to track him and he has expressed a real desire to be at this club following interest from elsewhere.
"He has the flexibility to play in a few positions across the midfield, scores goals and can slot in at right-back if required. I think he will bring a freshness to our midfield area and his character will suit our dressing room.
"We know we have a big summer ahead of us and it is great to get our first signing done so early."