You might not want to use GtkTable but it really is for the best if you want something tictactoe shaped.
GTK takes the approach of the minimal amount of force in telling the window manager what to do. A programmer will often take the approach of "I want my app to look like this" and then program exactly how it is meant to look. Many mistakes can be made this way if the programmer isn't aware of how things might be different on different devices (e.g. a close button that does not show within the limits of a netbook screen). GUI design is instead best done in describing the rough layout without trying to foil the window managers attempts to keep the software accessible for all.
Now with the process of having 3 sets of 3 column vbox's. How do these vboxs know to size themselves the same as each other to ensure nice neat horizontal lines across all 3 columns? You could tell them an exact size but that would be forcing. Better is to use the table which has this property inbuilt. Have to learn it at some point anyway as GTK3 has made the transition from boxes and Tables to GtkGrid.
In either way the answer you're after is to play around with the GtkAttachOptions https://developer.gnome.org/gtk3/stable/gtk3-Standard-Enumerations.html#GtkAttachOptions
that all tables, boxes, grids have; e.g. ensuring your centre square can shrink in x and y - GTK_SHRINK, the corners can expand freely in x and y, and the sides shrink in one dimension but can expand in the other.