Jo is introduced in the ninth season as an intern who initially clashes with Alex Karev (Justin Chambers). However, during Miranda Bailey's (Chandra Wilson) wedding, they bond over their shared difficult childhoods. As the season progresses, their friendship deepens, and Alex develops feelings for Jo. In the episode "Love Turns You Upside Down", after Jo assaults a parent for attempting to abandon her baby, she reveals to Alex that she was left at a fire station when she was two weeks old. Jo explains that she was passed around foster families until she began living in her car at age 16. She shares that Ms. Schmidt, a high school teacher, was the only person who ever cared about her and helped her succeed academically. Ms. Schmidt was also the one who gave Jo the watch she wears when she started working at the hospital. Alex compliments the watch and sits beside her, sharing a quiet moment of understanding. In the penultimate episode of season nine, "Readiness is All", Jo gets into an altercation with her then-boyfriend Jason Myers (Charles Michael Davis), revealing he physically abused her. She fought him off, and he hit his head on the fireplace. Alex convinces Jason not to press charges. In the finale, "Perfect Storm", Alex confesses his feelings to Jo, and they share a kiss.
By Season 10, Jo is a resident and is in a relationship with Alex.
In Season 11, Jo becomes frustrated with Meredith Grey (Ellen Pompeo) growing closer to Alex after Cristina Yang's (Sandra Oh) departure, feeling sidelined.
In Season 12, Jo finds an invoice from the fertility clinic where Alex and his ex-wife Izzie Stevens (Katherine Heigl) stored fertilized embryos when she had cancer. This discovery leads Jo to question whether her relationship with Alex is real, but Alex reassures her that his relationship with Izzie is in the past. Alex proposes to Jo, but she rejects him, revealing her frustration that he often prioritizes Meredith over her. In the season finale, "Family Affair", Jo drunkenly confesses to Andrew DeLuca (Giacomo Gianniotti) that she is already married and cannot marry Alex because she is estranged from her abusive husband, Paul Stadler (Matthew Morrison), having fled him to start a new life in Seattle. Alex walks in on Jo and DeLuca in a compromising situation, misinterprets it, and brutally attacks DeLuca, believing him to be assaulting Jo.
In the Season 13 episode "You Haven't Done Nothin'", Jo reveals to Alex that she is still married, and explains that she never told him because she feared he would attack her husband and end up in jail. Later, it is revealed that Jo's real name is Brooke and that Paul Stadler is her abusive husband.